我想将来自客户端的所有消息存储在我的“TCP服务器”的列表中。
import SocketServer
class MainServerHandler(SocketServer.BaseRequestHandler):
requests = []
def handle(self):
message = self.request.recv(4)
self.requests.append(message)
HOST, PORT = "localhost", 9999
server = SocketServer.TCPServer((HOST, PORT), MainServerHandler)
server.serve_forever()
当服务器收到第一条消息时,handle函数会将消息附加到列表中。
当服务器从客户端收到第二条消息时,没有先前附加消息的跟踪。
免责声明:我知道为什么会这样。我只是无法想出一种方法来存储列表中的所有消息。我只想使用
SocketServer
来实现这一点。
答案 0 :(得分:0)
请求处理程序为每个客户端连接获取一个新实例,但您已将请求创建为类变量,因此它可以正常工作:
#!python2
import SocketServer
class MainServerHandler(SocketServer.BaseRequestHandler):
requests = []
def handle(self):
message = self.request.recv(4)
self.requests.append(message)
print(self.requests)
HOST, PORT = "", 9999
server = SocketServer.TCPServer((HOST, PORT), MainServerHandler)
server.serve_forever()
客户端:
import socket
for i in range(3):
s = socket.socket()
s.connect(('localhost',9999))
s.sendall(b'abc')
s.close()
服务器输出:
[b'abc']
[b'abc', b'abc']
[b'abc', b'abc', b'abc']