0
我在使TCP服務器正常運行時遇到了一些麻煩......當我使用netcat
連接到它時,我只能發送一條消息,然後服務器不會顯示其他消息發送信息。當我將client, addr = tcp_socket.accept()
置於while循環外時,我可以接收多條消息,但只能連接一次...TCP服務器只能讀取一條消息並停止
解決這些問題的最佳方法是什麼?
代碼
class TCP(threading.Thread):
def __init__(self, host, port):
self.port = port
threading.Thread.__init__(self)
def create_socket(self, port):
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.bind(('', port))
sock.listen(5)
return sock
def listen(self, tcp_socket):
while True:
client, addr = tcp_socket.accept()
print "Got connection from", addr
data = client.recv(1024)
if data:
print "TCP", data
def run(self):
self.listen(self.create_socket(self.port))
考慮使用zmq。它會讓你的生活變得更簡單。甚至有命令行工具'zmqc',它允許與來自控制檯的面向行的消息進行通信(使用我的修改,它可以解決一些最新的更新:https://github.com/vlcinsky/zmqc) –