随笔 - 105  文章 - 0  评论 - 0  阅读 - 40744

网络编程二(socketserver)

为什么使用socketserver模块?能多并发。

一、使用socketserver的基本步骤

1、写一个子类,继承socketserver.BaseRequestHandler,并且重写且handle方法

2、定义一个socketserver类

3、使用对象的serve_forever()方法

例子,但此例子还是只适合一个用户连接,不能使用于多用户:

复制代码
 1 def main():
 2     class MyTcpHandle(socketserver.BaseRequestHandler):
 3         # 定义handle方法
 4         def handle(self):
 5             while True:
 6                 try:
 7                     self.data = self.request.recv(1024).strip()
 8                     print('发送到:', self.client_address)
 9                     self.request.send(self.data.upper())
10                 except ConnectionResetError:
11                     print('客户端断开了!')
12                     break
13 
14     server = socketserver.TCPServer(('localhost', 9999), MyTcpHandle)
15     server.serve_forever()
16 
17 
18 if __name__ == '__main__':
19     main()
View Code
复制代码

 要使用多并发,可使用socketserver.ThreadingTCPServer类,每进来一个客户端,就开启一个进程处理,例子如下:

复制代码
import socketserver


def main():
    class MyTcpHandle(socketserver.BaseRequestHandler):
        # 定义handle方法
        def handle(self):
            while True:
                try:
                    self.data = self.request.recv(1024).strip()
                    print('发送到:', self.client_address)
                    self.request.send(self.data.upper())
                except ConnectionResetError:
                    print('客户端断开了!')
                    break

    server = socketserver.ThreadingTCPServer(('localhost', 9999), MyTcpHandle)
    server.serve_forever()


if __name__ == '__main__':
    main()
View Code
复制代码

 

posted on   Treelight  阅读(233)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示