socketserver模块(实现并发)

Posted 竣~

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了socketserver模块(实现并发)相关的知识,希望对你有一定的参考价值。

socketserver模块(实现并发)

一、基于UDP协议实现的并发

# 服务端
import socketserver

class MyServer(socketserver.BaseRequestHandler):
    def handle(self):
        # print('来啦 老弟')
        while True:
            data,sock = self.request
            print(self.client_address)  # 客户端地址
            print(data.decode('utf-8'))
            sock.sendto(data.upper(),self.client_address)


if __name__ == '__main__':
    """只要有客户端连接  会自动交给自定义类中的handle方法去处理"""
    server = socketserver.ThreadingUDPServer(('127.0.0.1',8080),MyServer)  # 创建一个基于UDP的对象
    server.serve_forever()  # 启动该服务对象

# 客户端
import socket
import time

client = socket.socket(type=socket.SOCK_DGRAM)
server_address = ('127.0.0.1',8080)

while True:
    client.sendto(b'hello',server_address)
    data,addr = client.recvfrom(1024)
    print(data.decode('utf-8'),addr)
    time.sleep(1) # 发送间隔太短的话,看不出效果

二、基于TCP协议实现的并发

# 服务端
import socketserver

class MyServer(socketserver.BaseRequestHandler):
    def handle(self):
        # print('来啦 老弟')
        while True:
            data = self.request.recv(1024)
            print(self.client_address)  # 客户端地址
            print(data.decode('utf-8'))
            self.request.send(data.upper())


if __name__ == '__main__':
    """只要有客户端连接  会自动交给自定义类中的handle方法去处理"""
    server = socketserver.ThreadingTCPServer(('127.0.0.1',8080),MyServer)  # 创建一个基于TCP的对象
    server.serve_forever()  # 启动该服务对象
    
# 客户端
import socket

client = socket.socket()
client.connect(('127.0.0.1',8080))

while True:
    client.send(b'hello')
    data = client.recv(1024)
    print(data.decode('utf-8'))

以上是关于socketserver模块(实现并发)的主要内容,如果未能解决你的问题,请参考以下文章

python,利用socketserver模块实现并发聊天

socketserver实现并发

python,应用socketserver模块实现并发聊天程序

基于socketserver模块实现并发的套接字(tcpudp)

基于socketserver实现并发的socket编程

SocketServer-实现并发处理