socketserver
Posted tf511
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了socketserver相关的知识,希望对你有一定的参考价值。
基于TCPsocket:
# #基于TCP服务端 # import socketserver # from threading import current_thread # #fork linux 下一个多进程接口 windows没有这接口 # # # #用于处理请求的类: # class MyHandder(socketserver.BaseRequestHandler): # def handle(self): # print(self) # print(self.server) #获取封装的服务器对象 # print(self.client_address) #客户端地址 # print(self.request) #获取客户端的socket 对象 # print(current_thread()) # while True: # data = self .request.recv(1024) # print(data.decode(‘utf-8‘)) # self.request.send(data.upper()) # # # server = socketserver.ThreadingTCPServer((‘127.0.0.1‘,2020),MyHandder) # server.serve_forever()
# #基于TCP 客户端 # import socket # c = socket.socket(socket.AF_INET,socket.SOCK_STREAM) # addr = ((‘127.0.0.1‘,2020)) # c.connect(addr) # while True: # msg = input(‘>>>: ‘) # c.send(msg.encode(‘utf-8‘)) # # print(c.recv(1024).decode(‘utf-8‘))
基于UDPsocket:
#基于UDP服务端 import socketserver from threading import current_thread #fork linux 下一个多进程接口 windows没有这接口 #用于处理请求的类: class MyHandder(socketserver.BaseRequestHandler): def handle(self): print(self) print(self.server) #获取封装的服务器对象 print(self.client_address) #客户端地址 print(self.request) #获取客户端的socket 对象 print(current_thread()) # while True: data = self .request[0] print(data.decode(‘utf-8‘)) self.request[1].sendto(b"i am sever",self.client_address) server = socketserver.ThreadingUDPServer((‘127.0.0.1‘,2020),MyHandder) server.serve_forever()
#基于TCP 客户端 import socket c = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) addr = ((‘127.0.0.1‘,2020)) # c.connect(addr) while True: msg = input(‘>>>: ‘) c.sendto(msg.encode(‘utf-8‘),addr) print(c.recvfrom(1024)[0].decode(‘utf-8‘))
用法都一样
区别: self.request
TCP self.requsst 代表具体的链接
UDP self.requst 代表一个小元组(元组里面: 第一个元素 客户端发来的数据 ,第二个元素 回复客户端的套接字对象)
以上是关于socketserver的主要内容,如果未能解决你的问题,请参考以下文章