博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
网络编程——UDP协议,SocketServer模块介绍
阅读量:4510 次
发布时间:2019-06-08

本文共 1850 字,大约阅读时间需要 6 分钟。

一、UDP 数据报协议

特点:
①客户端允许发空————默认有报头
②协议不会粘包
③在服务端不存在的情况下,客户端不会报错
④udp 协议支持并发效果
注:udp在启动服务之后,只能被动等待客户端发消息,客户端发送消息是需要带上服务端地址
       同理,在服务端回消息是也要带上客户端地址
示例:

import socketserver = socket.socket(type=socket.SOCK_DGRAM)server.bind(('127.0.0.1', 8080))msg, addr = server.recvfrom(1024)print(msg.decode('utf-8'))server.sendto(b'hello', addr)server.close()
服务端
import socketclient = socket.socket(type=socket.SOCK_DGRAM)server_addr = ('127.0.0.1', 8080)client.sendto(b'hello server baby!', server_addr)msg, addr = client.recvfrom(1024)print(msg, addr)
客户端

总结:

TCP协议就类似于打电话UDP 协议就类似于发短信

二、SocketServer模块介绍(让tcp也能支持并发)

1、基于tcp协议的SocketServer:

import socketserverclass MyBaby(socketserver.BaseRequestHandler):    def handle(self):        # 通信循环        while True:            # self.request相当于你的conn通信对象            data,sock = self.request # 收消息            print(data)            sock.sendto(data.upper(),self.client_address)  # self.client_address客户端地址if __name__ == '__main__':    server = socketserver.ThreadingUDPServer(('127.0.0.1',8080),MyBaby)    server.serve_forever()
TCP 服务端
import socketclient = socket.socket()client.connect(('127.0.0.1',8080))while True:    client.send(b'hello')    data = client.recv(1024)    print(data)
TCP 客户端

2、基于udp协议的SocketServer:

import socketserverclass MyBaby(socketserver.BaseRequestHandler):    def handle(self):        # 通信循环        while True:            # self.request相当于你的conn通信对象            data,sock = self.request # 收消息            print(data)            sock.sendto(data.upper(),self.client_address)  # self.client_address客户端地址
UDP 服务端
import socketimport timeclient = socket.socket(type=socket.SOCK_DGRAM)sever_addr = ('127.0.0.1',8080)while True:    client.sendto(b'hello',sever_addr)    data,addr = client.recvfrom(1024)    print(data,addr)    time.sleep(1)
UDP 客户端

转载于:https://www.cnblogs.com/king-home/p/10813847.html

你可能感兴趣的文章
sql知识点记录
查看>>
让博客园博客自动生成章节目录索引
查看>>
Configure First SpringMVC project in IntelliJ IDEA(fail)
查看>>
c#中如何获取本机用户名、MAC地址、IP地址、硬盘ID、CPU序列号、系统名称、物理内存...
查看>>
CheckBox控件
查看>>
ASP.NET之Request和Response对象
查看>>
scrapy--ipproxy
查看>>
MYSQL常用命令集合
查看>>
进度条
查看>>
弹窗大全
查看>>
centos7 install python3
查看>>
jQuery 中的 39 个技巧【申明:来源于网络】
查看>>
django之访问频率
查看>>
C# 获取网卡IP地址
查看>>
ASP.NET 2.0 中 Treeview 的Checkboxes 选中根 枝叶全选中的实现方法(转)
查看>>
python 多进程简单调用
查看>>
APP压力稳定性测试
查看>>
Java-循环语句和条件语句
查看>>
mysql数据库和禅道安装
查看>>
一、python特性+python安装测试
查看>>