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的主要内容,如果未能解决你的问题,请参考以下文章

socketserver.py代码阅读笔记

socketserver.py代码阅读笔记

socketserver实现并发

socketserver

Python网络编程篇之socketserver

socketserver源码解析和协程版socketserver