0

我正在尝试使用套接字在 python 中创建一个服务器/客户端来发送文本和其他媒体文件。 场景:-客户端将主机、端口和文件名作为参数并将文件发送到服务器。 错误描述:-在尝试执行以下客户端代码时,文本文件“tos”与客户端位于同一目录中。出现以下错误。

**$ python Cli.py 127.0.0.1 5007 tos**
Traceback (most recent call last):
  File "Cli.py", line 32, in <module>
    client= Client(host,port,file)
  File "Cli.py", line 15, in __init__
    self.connect(file)
  File "Cli.py", line 20, in connect
    self.sendFile(file)
  File "Cli.py", line 26, in sendFile
    readByte = open(file, "rb")
**IOError: [Errno 2] No such file or directory: ''**

注意:-另外请描述是否有任何方式将文件发送到服务器,搜索硬盘驱动器。

服务器:-

from socket import *
port = 5007
file = ''
class Server:
    gate = socket(AF_INET, SOCK_STREAM)   
    host = '127.0.0.1'
    def __init__(self, port):
        self.port = port
        self.gate.bind((self.host, self.port))  
        self.listen()

    def listen(self):
        self.gate.listen(10)
        while True:
            print("Listening for connections, on PORT: ", self.port)
            add = self.gate.accept()
            self.reciveFileName()
            self.reciveFile()


    def reciveFileName(self):
        while True:
            data = self.gate.recv(1024)
            self.file = data

    def reciveFile(self):
        createFile = open("new_"+self.file, "wb")
        while True:
            data = self.gate.recv(1024)
            createFile.write(data)
        createFile.close()
server= Server(port)
listen()

客户:-

 #!/usr/bin/env python
from socket import *
host = ''
port = 5007
file = ''
class Client:
    gateway = socket(AF_INET, SOCK_STREAM)
    def __init__(self, host,port, file):
        self.port = port
        self.host = host
        self.file = file
        self.connect()

    def connect(self):
        self.gateway.connect((self.host, self.port))
        self.sendFileName(file)
        self.sendFile(file)

    def sendFileName(self):
        self.gateway.send("name:" +self.file)

    def sendFile(self):
        readByte = open(self.file, "rb")
        data = readByte.read()
        readByte.close()

        self.gateway.send(data)
        self.gateway.close()
client= Client(host,port,file)
connect()
4

2 回答 2

0

3个月前有这个任务作为家庭作业。解决方案非常简单——您只需读取文件,将读取的文本放入字符串变量中并发送。看看这个服务器代码:

HOST = '192.168.1.100'
PORT = 8012
BUFSIZE = 1024
ADDR = (HOST, PORT)
serversock = socket(AF_INET, SOCK_STREAM)
serversock.bind(ADDR)
serversock.listen(SOMAXCONN)

fileOpen = open("D:/fileLocation.txt")
g = f.read()
print 'Waiting For Connection..'
clientsock, addr = serversock.accept()
print 'Connection Established From: ', addr`
clientsock.sendall(g)

这是一种非常简单的方法。

客户端只需接收数据(作为文本)并将其保存在所需位置。

也为我使用 BMP、PNG 和 JPG 图像。

于 2013-07-06T09:24:46.840 回答
0

目前file = ''which in 不是一个有效的文件名。为了清楚起见,我还建议重命名filefilename

于 2013-07-06T08:37:43.697 回答