Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python套接字(如何将文件名与文件内容分离)_Python_Sockets - Fatal编程技术网

Python套接字(如何将文件名与文件内容分离)

Python套接字(如何将文件名与文件内容分离),python,sockets,Python,Sockets,我已经编写了两个客户端和服务器python脚本,分别是服务器正在侦听客户端发送的文件,下面是我侦听文件的服务器代码。代码的问题是我无法将文件名与文件数据分开。以下输出是接收到的数据。txtMyName 您必须在TCP/IP之上创建自己的简单协议才能使其工作。我认为最简单的方法是在文件名和文件内容之间添加一个特殊字符(例如0x00)。接收站点可以检测到此字符并拆分文件名和文件内容 更复杂的协议还可以发送文件大小,以便接收站点可以检测传输何时结束以及是否发送了所有字节。 它也将是好的,发送确认消息给

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


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

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


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

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

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


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

您还需要包含发送文件的代码。@aya我已经包含了代码。您如何将文件名与文件的其余部分分开?空字节可能会起作用……只是想知道用一个空白的“``”来打印'filename',data.strip(),您还需要包含发送文件的代码。@aya我已经包含了代码您如何将文件名与文件的其余部分分开?一个空字节可能就可以了……只是想知道
打印'filename',data.strip()????
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()