socketserver实现并发(Python)

socketserver实现并发原理:给每一个前来链接的客户端开启一个线程执行通信。也就是给每一个连接“配备”了一个管家。

下面用一个简单的示例来演示socketserver实现并发(一个服务端,两个客户端):

 

服务器端:

复制代码
 1 # Author : Kelvin
 2 # Date : 2019/2/3 21:51
 3 import socketserver
 4 from socket import *
 5 
 6 ip_conf = ("127.0.0.1", 8888)
 7 buffer_capcity = 1024
 8 
 9 
10 class Mysocket(socketserver.BaseRequestHandler):
11     def handle(self):
12         print(self.request)
13         print(self.client_address)
14 
15         while True:
16             data = self.request.recv(buffer_capcity).decode("utf8")
17             print("服务器收到信息:%s" % data)
18             self.request.send("服务器收到信息!".encode("utf8"))
19 
20 
21 if __name__ == "__main__":
22     s = socketserver.ThreadingTCPServer(ip_conf, Mysocket)
23     s.serve_forever()
复制代码

 

客户端一:

复制代码
 1 # Author : Kelvin
 2 # Date : 2019/2/3 21:51
 3 from socket import *
 4 
 5 ip_conf = ("127.0.0.1", 8888)
 6 buffer_capcity = 1024
 7 client = socket(AF_INET, SOCK_STREAM)
 8 client.connect(ip_conf)
 9 while True:
10     client.send(input("客户端1输入:").encode("utf8"))
11     data = client.recv(buffer_capcity).decode("utf8")
12     print(data)
复制代码

 

客户端二:

复制代码
 1 # Author : Kelvin
 2 # Date : 2019/2/3 21:51
 3 from socket import *
 4 
 5 ip_conf = ("127.0.0.1", 8888)
 6 buffer_capcity = 1024
 7 client = socket(AF_INET, SOCK_STREAM)
 8 client.connect(ip_conf)
 9 while True:
10     client.send(input("客户端2输入:").encode("utf8"))
11     data = client.recv(buffer_capcity).decode("utf8")
12     print(data)
复制代码

 

打印结果:

服务器输出:

客户端一:

客户端二:

posted @   佛祖让我来巡山  阅读(449)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~

佛祖让我来巡山博客站 - 创建于 2018-08-15

开发工程师个人站,内容主要是网站开发方面的技术文章,大部分来自学习或工作,部分来源于网络,希望对大家有所帮助。

Bootstrap中文网

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