如何避免管道错误

时间:2018-05-07 15:06:04

标签: python sockets

我使用Python套接字将50多个客户端连接到服务器以传输图像。我正在使用无线网络连接它们。我遇到的一个问题是,当没有通信一段时间说10分钟时,软件会中断。否则它工作正常。

这是客户端的send方法:

f = open(fullpath, "rb")
filesize = str(os.path.getsize(fullpath))
s.send(filesize.encode('utf-8'))
while True:
    data = f.read(512)
    if not data:
        break
    s.send(data)
f.close() 
print("Finished sending image to server")
output("Finished sending image to server")

这是服务器端的receive方法:

client[0].send(str.encode("start"))
data = client[0].recv(1024).decode('utf-8')
filesize = int(data)
f = open(filenames[count], "wb")
currentSize = 0
while currentSize < filesize:
    data = client[0].recv(512)
    if not data:
       break
    if len(data) + currentSize > filesize:
       data = data[:filesize-currentSize]
    f.write(data)
    currentSize += len(data)
f.close()

在客户端,我收到错误:[Errno 32]管道损坏。在服务器端,我得到错误:'utf-8'编解码器无法解码位置0中的字节0xff:无效的起始字节。 客户端发送文件大小时会发生错误。

我的代码中是否有错误?我可以让服务器和客户端不断地来回发送字符串以保持连接活着吗?

0 个答案:

没有答案