相关疑难解决方法(0)

使用 TCP 套接字传输图像时缺少一像素行

我现在面临奇怪的错误,我有 python 脚本,它使用 TCP 套接字发送/接收数据,一切正常,但是当我尝试使用此脚本下载图像时,它会下载它,但是有一个缺少一个像素的行。关于如何解决它的任何想法?

服务器下载脚本:

    def download(self, cmd):
        try:
            self.c.send(str.encode(cmd))
            command,filename=cmd.split(' ')
            nFile = open(filename, 'wb')
            i = self.c.recv(1024)
            while not ('complete' in str(i)):   
                nFile.write(i)
                i = self.c.recv(1024)
            nFile.close()
            self.reset = True
            print('\nGot that file')
        except Exception as e:
            print(e)
Run Code Online (Sandbox Code Playgroud)

客户端上传脚本:

   def upload(self, filename):
    try:
        fd = open(filename, 'rb')
        data = fd.read(1024)
        while (data):
            self.s.sendall(data)
            data = fd.read(1024)
        self.s.send(str.encode('complete'))
        fd.close()
    except Exception as e:
        print(e)
Run Code Online (Sandbox Code Playgroud)

示例 - 您可以看到,缺少最后一行像素: 在此处输入图片说明

解决方案(1): 这不是解决方案,只是解决方法,使用另一个!

如果在将最后一块数据写入 nFile 之前删除有效负载的完整部分会发生什么?– mtrw

问题在于向服务器发送“完整”字符串,因为脚本没有足够的时间从图像中获取所有字节。因此,解决此问题的一种方法是将sleep(0.2)添加到脚本中。

客户端上传脚本:

   def …
Run Code Online (Sandbox Code Playgroud)

python tcp

5
推荐指数
1
解决办法
104
查看次数

标签 统计

python ×1

tcp ×1