python之socketserver实现并发

python之socketserver实现并发

 

服务端

复制代码
import socketserver
#socketserver模块是用来实现并发
#   我们自己的类里一定要继承socketserver.BaseRequestHandler方法
#   里面需要一个handle方法
#   每当客户端来连接时,就会创建一个实例,实例与实例之间独立
#   实例包含
# self.request:conn          作用:服务端收发信息的对象
# self.client_address:addr    作用:客户端的ip地址
class Myserver(socketserver.BaseRequestHandler):
    def handle(self):
        print("conn is:"+str(self.request))
        print("conn is:" + str(self.client_address))

        #通讯循环
        while True:
            #收信息
            try:
                data = self.request.recv(1024).decode('utf-8')
                if data:
                    print("客户端发过来的信息:" + data)

                # 发信息
                self.request.sendall(data.upper().encode('utf-8'))
            except Exception as e:
                continue
if __name__=="__main__":
    #链接循环
    #这个方法需要两个参数,((ip,port),Myserver)
    s=socketserver.ThreadingTCPServer(('127.0.0.1',8080),Myserver)
    #永远运行
    s.serve_forever()

    #socketserver.ThreadingTCPServer()方法循环不端的接收新的连接
    #handle()方法与客户端循环进行通讯
复制代码

 

 

客户端

复制代码
import socket


def main():
    ip_port = ('127.0.0.1', 8080)

    s2 = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

    s2.connect(ip_port)  # 连接服务端

    while 1:
        data1 = input("-->").strip()
        if not data1:continue
        if data1 =='quit':break
        s2.sendall(data1.encode('utf8'))
        data2=s2.recv(1024)
        print(data2.decode("utf-8"))
if __name__ == '__main__':
    main()
复制代码

 

 

关于socketserver更多的介绍和使用,可以看一下这篇博文:

https://www.cnblogs.com/Security-Darren/p/4594393.html

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