为什么一个tcp连接无法发送多个请求?

时间:2015-01-13 09:12:52

标签: python sockets tcp

我有一个客户端通过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]管道损坏

0 个答案:

没有答案