在客户端中的send()之后调用recv()导致服务器冻结

时间:2019-05-07 08:49:50

标签: python-3.x python-sockets

我是Python套接字的新手,已经搜寻了好几天却找不到解决问题的方法。

client.py

ip = 'hidden IP address'
port = 4444
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((ip, port))

s.send(data)
d = s.recv(1024)
print(d)

server.py

while True:
    print('waiting')
    clientsocket, address = s.accept()
    print(address)

    data = b''
    while True:
        d = clientsocket.recv(1024)
        data = data + d
        if len(d) <= 0:
            break

    print(pickle.loads(data))

    clientsocket.send(b'test')

如果我将其注释掉:

d = s.recv(1024)
print(d)

...在client.py中:

clientsocket.send(b'test')

...在server.py中,它可以正常工作,并且服务器会打印出数据,但是当我尝试发送答复时,服务器会暂停并且永不中断。为什么?

我想要的是让客户端发送数据,然后等待接收到一些东西。稍后,在完整脚本中,客户端将不得不等待大约5分钟,然后才能真正收回一些东西。我该怎么办?

0 个答案:

没有答案