【发布时间】:2014-09-18 14:53:24
【问题描述】:
我在 python 中使用了一个简单的 tcp_server。这是代码:-
import socket
TCP_IP = '127.0.0.1'
TCP_PORT = 5005
BUFFER_SIZE = 1024
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((TCP_IP, TCP_PORT))
s.listen(1)
conn, addr = s.accept()
#inputs = [conn, serial_obj]
outputs = []
#read_input.read_input(inputs,outputs)
while 1:
data = conn.recv(BUFFER_SIZE)
if not data: break
print "received data:", data
conn.send(data)
conn.close()
我的问题是一旦它接收到数据,连接就会断开,我必须重新运行 tcp_server 程序来启动连接。我如何让它永远听下去。
【问题讨论】:
-
您永远不会接受新的连接。您接受一个连接,然后从中读取。
-
对不起,我的意思是当我收到数据时,连接断开了。要再次从同一连接接收数据,我必须重新启动程序。我怎样才能让它永远听下去。谢谢
-
您将每 1024 个字节接收一次。
-
好的。取点。但是,如果我想一次又一次地接收 1024 个字节怎么办。
-
您的代码,如所写,将接收与您在一个连接上发送它一样多的块(每个最多 1024 个字节),但它只会接受一个连接。从您的 cmets 看来,您的客户端代码每次连接尝试只发送一个块。您能否包含一个客户端程序,以便我们就您的整个系统为您提供建议?
标签: python tcp python-sockets