十七.Python_socketserver模块并发网络编程

Python_socketserver模块并发网络编程

 #TCPServer

#socketserver  服务器并发访问的模块,服务器可以同时处理多个客户端的请求
#导入import socketserver
#定义一个继承socketserver.BaseRequestHandler的类
#类中定义handle函数
#self.request  服务器获取的客户端的链接
#self.client_address  客户端的ip与端口
#self.request.send() 发送信息
#self.request.recv() 接收信息
#socketserver.ThreadingTcpServer(ip_port,类) 定义TCP并发客户端,绑定客户端连接的类
#socket.server_forever()  服务器处理一次请求后,继续等待线程接入


import socketserver
ip_port=("127.0.0.1",8006)
class server(socketserver.BaseRequestHandler):
    def handle(self):
        print("conn:>>%s"%self.request)
        # print("client_addres:>>%s"%self.client_address)
        while True:
            data=self.request.recv(1024).decode("utf-8")
            print("客户端发来信息:>>%s %s"%(data,self.client_address))
            self.request.send(data.upper().encode("utf-8"))

if  __name__=="__main__":
    so=socketserver.ThreadingTCPServer(ip_port,server)
    so.serve_forever()

#UDP Server


#socketserver UDP
#定义继承socket.BaseRequestHandler的类
#类定义handle函数
#self.request  接收的是个tuple,第一个是数据,第二个是连接
#self.client_address 获取的是客户端的地址与端口
#self.request[0]是接收的数据
#self.request[1] 是客户端的连接
#self.request[1].sendto(data,self.client_address) 向客户端发送数据

#s=socketserver.ThreadingUdpServer(ip_port,绑定的类)  创建基于服务器类的Udp服务
#s.socket.server_forever()  循环接收不同客户端的请求

import socketserver

ip_port=('127.0.0.1',8080)
class udpserver(socketserver.BaseRequestHandler):
    def handle(self):
        print(self.request)
        data=self.request[0].decode("utf-8")
        # data,addr=self.request.recv(1024).decode("utf-8")
        print("客户端发来请求:>>%s  --%s"%(data,self.request[1]))
        self.request[1].sendto(data.upper().encode("utf-8"),self.client_address)


if __name__=="__main__":
    us=socketserver.ThreadingUDPServer(ip_port,udpserver)
    us.serve_forever()

猜你喜欢

转载自blog.csdn.net/qq_39663113/article/details/85646273