网络编程二(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

 

转载于:https://www.cnblogs.com/Treelight/p/10859858.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值