Python TCP 套接字服务器存储来自客户端的消息



我想将来自客户端的所有消息存储在我的"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()

当服务器收到第一条消息时,句柄函数会将消息追加到列表中。

当服务器从客户端收到第二条消息时,没有先前附加的消息的跟踪。

免责声明:我知道为什么会发生这种情况。我只是无法找到将所有消息存储在列表中的方法。我只想使用SocketServer来实现这一点。

请求处理程序为每个客户端连接获取一个新实例,但您已将请求创建为类变量,因此它可以工作:

#!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']

最新更新