我有一个客户端通过tcp连接到服务器,我只想创建一个连接,然后使用for循环发送数据,但程序不起作用,从服务器端我可以看到客户端只发送数据到服务器一次,我不知道为什么,这是我的客户端代码,
def recv_req(_sock):
try:
h = _sock.recv(4)
total_len = struct.unpack("!I", h)[0]
left = total_len - 4
mystr=""
while left > 0:
tmp=_sock.recv(left)
if not len(tmp):
break
mystr += tmp
left -= len(tmp)
return mystr
except:
print format_exc()
return
conn = socket.create_connection(('127.0.0.1', 5599))
for i in range(3):
conn.sendall(buf)
rbuf=recv_req(conn)
客户端错误是这样的:它显示第一个recv是成功的,但第二个recv是崩溃。当我将create_connection移动到循环中时,它运行良好,我不知道为什么会这样做
10
Traceback(最近一次调用最后一次):文件“white_checker.py”,行 28,在recv_req中 total_len = struct.unpack(“!I”,h)[0]错误:unpack需要长度为4的字符串参数
回溯(最近一次调用最后一次):文件“white_checker.py”,第63行, 在download_samples中 conn.sendall(buf)文件“/home/work/local/lib/python2.7/socket.py”,第224行,在meth return getattr(self._sock,name)(* args)错误:[Errno 32]管道损坏