socketserver 模块的使用

socketserver模块的使用

socketserver是一个集成socket,thread,select模块的综合模块,主要用实现用较为简单的方法建立服务端的模块。可以应对较小并发的客户需求。

socketserver建立TCP服务端。

服务端

import socketserver

#处理的方法(服务端工作的方式的类)
class Myhandler(socketserver.BaseRequestHandler):
    def handle(self):#开始工作自动执行下列函数
        print(self.server)#socketserver对象
        print(self.client_address)#客户端地址
        print(self.request)#客户端连接对象
        while True:
            data = self.request.recv(1024)
            self.request.send(data.upper())

server = socketserver.ThreadingTCPServer(("127.0.0.1",6666),Myhandler)#一以线程的方式建立tcp服务端
server.serve_forever()#让服务端持续工作

客户端

import socket
client = socket.socket()
client.connect(("127.0.0.1",6666))

while True:
    msg = input(">>>")
    if not msg:
        continue
    client.send(msg.encode("utf-8"))
    data = client.recv(1024)
    print(data.decode("utf-8"))

基于UDP的socketserver

服务端

import socketserver

addr  = ("127.0.0.1",3239)


class Myhandle(socketserver.BaseRequestHandler):
    def handle(self):
        print(self.server)#socketserver对象
        print(self.client_address)
        print(self.request)#数据,和服务端socket对象
        data = self.request[0]
        self.request[1].sendto(data.upper(),self.client_address)


server = socketserver.ThreadingUDPServer(addr,Myhandle)
server.serve_forever()

客户端

import socket
client = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)

addr  = ("127.0.0.1",3239)
while True:
    msg = input(">>>")
    client.sendto(msg.encode("utf-8"),addr)
    data = client.recvfrom(1024)
    print(data[0].decode("utf-8"))
原文地址:https://www.cnblogs.com/msj513/p/9963655.html