socketserver实现并发

本文深入探讨了Python中SocketServer模块的使用,该模块通过封装socket,实现了与多个客户端的并发通信。文中提供了详细的代码示例,展示了如何创建服务器端和客户端,以及服务器如何处理来自多个客户端的数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们之前写的tcp协议的socket是不是一次只能和一个客户端通信,如果用socketserver可以实现和多个客户端通信。它是在socket的基础上进行了一层封装,也就是说底层还是调用的socket,在py2.7里面叫做SocketServer也就是大写了两个S,在py3里面就小写了。后面我们要写的FTP作业,需要用它来实现并发,也就是同时可以和多个客户端进行通信,多个人可以同时进行上传下载等。

 
  那么我们先看socketserver怎么用呢,然后在分析,先看下面的代码
复制代码
import socketserver  # 引入模块

class MyServer(socketserver.BaseRequestHandler):   # 类名随便定义,但是必须继承socketserver.BaseRequestHandler此类
    
    def handle(self):  # 写一个handle方法,固定名字
        while 1:
            # self.request 相当于conn管道
            from_client_data = self.request.recv(1024).decode('utf-8')
            print(from_client_data)
            to_client_data = input('服务端回信息:').strip()
            self.request.send(to_client_data)
            


if __name__ == '__main__':
    ip_port = ('127.0.0.1',8080)
    socketserver.TCPServer.allow_reuse_address = True  # 允许端口重用
    server = socketserver.ThreadingTCPServer(ip_port,MyServer)
    # 对 socketserver.ThreadingTCPServer 类实例化对象,将ip地址,端口号以及自己定义的类名传入,并返回一个对象
    server.serve_forever() # 对象执行serve_forever方法,开启服务端

 

import socket
client = socket.socket()
client.connect(('127.0.0.1',8888))

while 1:
    to_server_data = input('>>>').strip().encode('utf-8')
    client.send(to_server_data)
    from_server_data = client.recv(1024).decode('utf-8')
    print(from_server_data)

 

转载于:https://www.cnblogs.com/YZL2333/p/10429451.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值