当我尝试接收更大量的数据时,它会被截断,我必须按回车键才能获取剩余的数据。起初,我能够稍微增加一点,但仍无法接收全部数据。正如您所看到的,我已经增加了conn.recv()中的缓冲区,但仍无法获取所有数据。它在某个特定点被截断。我必须在raw_input上按回车键才能接收剩余的数据。有没有办法让我一次性获取所有数据?这是代码。
port = 7777
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.bind(('0.0.0.0', port))
sock.listen(1)
print ("Listening on port: "+str(port))
while 1:
conn, sock_addr = sock.accept()
print "accepted connection from", sock_addr
while 1:
command = raw_input('shell> ')
conn.send(command)
data = conn.recv(8000)
if not data: break
print data,
conn.close()
return None
而不是引发异常。 - Adam Rosenfielddata += packet
这行代码可能导致接收速度非常慢。更好的方法是使用data = bytearray()
然后执行data.extend(packet)
。 - Stan Kriventsov