socketserver模块

socketserver模块

socketserver模块能让TCP实现并行

客户端

import socket

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

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

服务端

import socketserver


class MyServer(socketserver.BaseRequestHandler):
    def handle(self):
        print('xxx')
        while True:
            try:
                data = self.request.recv(1024)
                print(self.client_address)  # 客户端地址
                print(data.decode('utf-8'))
                self.request.send(b'%s,xxx' % data)
            except Exception:
                break


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

socketserver模块同样支持udp

客户端

import socket

client = socket.socket(type=socket.SOCK_DGRAM)
sever_addre = ('127.0.0.1', 8080)
while True:
    client.sendto(b'hello', sever_addre)
    data, addre = client.recvfrom(1024)
    print(data.decode('utf-8'))

服务端

import socketserver


class MyServer(socketserver.BaseRequestHandler):
    def handle(self):
        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__':
    server = socketserver.ThreadingUDPServer(('127.0.0.1', 8080), MyServer)
    server.serve_forever()
原文地址:https://www.cnblogs.com/asdaa/p/11324305.html