SocketServer如何识别客户端

2024-07-06 23:35:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我在一个非常简单的服务器上工作。此服务器应该能够执行clients请求的一些预定义命令。在

我想单独存储有关已连接客户端的信息。例如,我希望服务器添加一些特定的clients请求。在

下面是一个例子:

SERVER
CLIENT1 
CLIENT2

CLIENT1> print 'stuff'
SERVER>> REQUESTS: 1 OUTPUT: stuff
CLIENT2> print 'simple sentence'
SERVER>> REQUESTS: 1 OUTPUT: simple sentence
CLIENT> print 'hilarious'
SERVER>> REQUESTS: 2 OUTPUT: hilarious

我的代码很简单:

^{pr2}$

所以我想知道的是如何存储每个客户的信息。我正在考虑创建一个类Client,并在每个连接之后创建一个object,但我不知道应该在哪里创建这个对象。在


Tags: 命令服务器信息客户端outputserversimplerequests
1条回答
网友
1楼 · 发布于 2024-07-06 23:35:44

您可以使用处理程序的client_address属性来标识客户机,并跟踪全局dict中的请求:

from collections import defaultdict

client_requests = defaultdict(int)

class ThreadedTCPRequestHandler(SocketServer.BaseRequestHandler):
    def handle(self):
        ...
        client_requests[self.client_address[0]] += 1
        response = "{} ({}): {}".format(cur_thread.name, client_requests[self.client_address[0]], output)

请注意,由于您使用的是线程服务器,您可能需要添加一些锁定代码来保护对client_requests的写入,但这是留给读者的练习。在

相关问题 更多 >