2

我已经编写了两个客户端和服务器 python 脚本,服务器正在监听客户端发送文件以下是我用于监听文件的服务器代码。代码的问题我无法将文件名与文件数据分开。接收到以下输出data.txtMyName

def sendFileName(self):
        self.clientsocket.send("name:" + self.filename)
        print 'filename', self.filename

    def sendFile(self):

        f=open(self.filename,"rb")
        data= f.read(1024)
        while (data):
          if(self.clientsocket.send(data)):
           print "sending data"
           data = f.read(1024)
           #readByte = open(self.filename, "rb")
           #data = readByte.read()
           #readByte.close()
           #self.gateway.send(data)
        self.clientsocket.close()
        f.close


     def receiveFile(self,sock):
             data = sock.recv(1024)
             print 'filename', data.strip()
             f = open(data.strip(), "wb")
             data = sock.recv(1024)
             while (data):
               f.write(data)
               data=sock.recv(1024)
             f.close()
             self.server_socket.close()
4

1 回答 1

4

您必须在 TCP/IP 之上创建自己的简单协议才能使其正常工作。我想最简单的方法是在文件名和文件内容之间添加一个特殊字符(例如 0x00)。接收站点可​​以检测到此字符并拆分文件名和文件内容。

更复杂的协议也可以发送文件大小,以便接收站点可​​以检测传输何时最终结束以及是否发送了所有字节。将确认消息发送给接收者收到整个文件的发送者也是很好的。

有很多传输文件协议(TFTP、FTP),它们的存在是有原因的,因为没有任何协议的纯 TCP/IP 是无用的。

于 2013-05-04T21:14:50.227 回答