码迷,mamicode.com
首页 > 其他好文 > 详细

socketserver模块(实现并发)

时间:2019-08-20 01:17:30      阅读:73      评论:0      收藏:0      [点我收藏+]

标签:tcp协议   间隔   cli   sel   import   data   自定义   nec   reading   

socketserver模块(实现并发)

一、基于UDP协议实现的并发

# 服务端
import socketserver

class MyServer(socketserver.BaseRequestHandler):
    def handle(self):
        # print('来啦 老弟')
        while True:
            data,sock = self.request
            print(self.client_address)  # 客户端地址
            print(data.decode('utf-8'))
            sock.sendto(data.upper(),self.client_address)


if __name__ == '__main__':
    """只要有客户端连接  会自动交给自定义类中的handle方法去处理"""
    server = socketserver.ThreadingUDPServer(('127.0.0.1',8080),MyServer)  # 创建一个基于UDP的对象
    server.serve_forever()  # 启动该服务对象

# 客户端
import socket
import time

client = socket.socket(type=socket.SOCK_DGRAM)
server_address = ('127.0.0.1',8080)

while True:
    client.sendto(b'hello',server_address)
    data,addr = client.recvfrom(1024)
    print(data.decode('utf-8'),addr)
    time.sleep(1) # 发送间隔太短的话,看不出效果

二、基于TCP协议实现的并发

# 服务端
import socketserver

class MyServer(socketserver.BaseRequestHandler):
    def handle(self):
        # print('来啦 老弟')
        while True:
            data = self.request.recv(1024)
            print(self.client_address)  # 客户端地址
            print(data.decode('utf-8'))
            self.request.send(data.upper())


if __name__ == '__main__':
    """只要有客户端连接  会自动交给自定义类中的handle方法去处理"""
    server = socketserver.ThreadingTCPServer(('127.0.0.1',8080),MyServer)  # 创建一个基于TCP的对象
    server.serve_forever()  # 启动该服务对象
    
# 客户端
import socket

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

while True:
    client.send(b'hello')
    data = client.recv(1024)
    print(data.decode('utf-8'))

socketserver模块(实现并发)

标签:tcp协议   间隔   cli   sel   import   data   自定义   nec   reading   

原文地址:https://www.cnblogs.com/DcentMan/p/11380543.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!