我的客户端发送一个字符串“abcd”,一半关闭套接字(写入部分)。我的服务器读取数据并将其附加到列表(集合)中,直到收到文件结尾(检测到半封闭套接字)。然后它遍历列表并发送数据。
我的服务器代码:
while True:
try:
sock,address = self.__mySocket.accept()
except:
print "Client is dead"
break
print "Client connect: " + str(address)
collection = []
while True:
data = sock.recv()
if len(data) == 0:
break
data = str(data[::-1])
collection.append(data)
for val in collection:
sock.send(val)
sock.close()
客户:
sslsock.sendall('abcd\n')
time.sleep(1)
sslsock.shutdown(socket.SHUT_WR)
data = ""
while True:
data = sslsock.recv()
if len(data) == 0:
sslsock.close()
sys.exit(1)
print data
现在,当我在客户端打印数据时,它只是打印垃圾。我尝试过使用pickle
但也没用。现在,当我在客户端注释掉关闭并在我的服务器周围工作时,它运行正常。它打印发送数据的反向。
答案 0 :(得分:0)
在服务器代码中。我把for循环放在if len(data)== 0里面。而且,它的工作原理。我猜这个破坏声明甚至突破了外面的真实。所以,它永远不会发送。