我从python文档复制了echo服务器的例子,它工作正常。但是当我编辑代码时,所以它不会将数据发送回客户端,而socket.recv()方法在第二次调用时不会返回。Python套接字没有收到没有发送
import socket
HOST = ''
PORT = 50007
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(1)
conn, addr = s.accept()
print('Connected by', addr)
while True:
data = conn.recv(1024)
if not data: break
conn.sendall(b'ok')
conn.close()
从Python文档while循环原始版本略有不同:
while True:
data = conn.recv(1024)
if not data: break
conn.sendall(data)
客户端的代码:
import socket
HOST = 'localhost'
PORT = 50007
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
s.sendall(b'Hello, world')
data = s.recv(1024)
s.close()
print('Received', repr(data))
哪里的客户端的源代码?你只是直接连接'nc'或'telnet'? – Kevin
直到客户端关闭连接后,接收才会返回。但客户在收到信息之前不会关闭连接。 – tdelaney
我首先想在客户端收到服务器确认后关闭连接......我怎么能在我的情况下做到这一点? – no0by5