(python)socketserver的使用


socketserver基于TCP下的使用:

服务端

import socketserver

class MyTcpHandler(socketserver.BaseRequestHandler):
    def handle(self):
        while True:
            try:
                data=self.request.recv(1024)
                if not data:break#此行代码针对linux系统
                self.request.send(data.upper())
            except ConnectionResetError:
                break
        self.request.close()

if __name__ == '__main__':
    server=socketserver.ThreadingTCPServer(('127.0.0.1',8080),MyTcpHandler)
    server.serve_forever()

此代码中的self.request相当于一个conn:


客户端

from socket import *
import os

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

while True:
    msg='%s hello'%os.getpid()
    client.send(msg.encode("utf-8"))
    data=client.recv(1024)
    print(data.decode('utf-8'))

socketserver基于UDP下的使用:

服务端

import socketserver

class MyUdpHandler(socketserver.BaseRequestHandler):
    def handle(self):
        res=self.request[0]
        print('客户端发来的数据:',res)

        self.request[1].sendto(res.upper(),self.client_address)


if __name__ == '__main__':
    server=socketserver.ThreadingUDPServer(('127.0.0.1',8080),MyUdpHandler)
    server.serve_forever()

此时的self.request是一个元组:


客户端

from socket import *
import os

client=socket(AF_INET,SOCK_DGRAM)

while True:
    msg='%s hello'%os.getpid()
    client.sendto(msg.encode('utf-8'),('127.0.0.1',8080))
    data,server_addr=client.recvfrom(1024)
    print(data.decode('utf-8'))

猜你喜欢

转载自blog.csdn.net/miaoqinian/article/details/80199916
今日推荐