UDP协议:

UDP (User Datagram Protocol, 用户数据报协议) 是一种无连接,不可靠,基于数据的传输层通信协议。

UDP的通信过程与TCP相比比较为简单, 不需要复杂的三次握手四次挥手,提现了无连接;

UDP传输速度比TCP快, 但容易丢包,数据到达准确性无保证, 缺乏拥塞控制, 秉承尽最大努力交付的远着,提现了不可靠;

UDP的无连接与不可靠特性注定无法采用字节流的通信模式,由协议名中[Datagram] 与socket类型中的[SOCK_DGRAM]即可提现他基于数据报的通信模式。

#服务端
import socket #第一个参数为 socket.AF_INET,代表采用 IPv4 协议用于网络通信,
# 第二个参数为 socket.SOCK_DGRAM,代表采用 UDP 协议用于无连接的网络通信。
soc = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
#服务端才需要绑定IP和端口
soc.bind("127.0.0.1",6000) print("udp bound on port 6000") while True:
data, addr = soc.recvfrom("")
print("receive:%s %s"%(addr, data)) if data == b"exit":
soc.sendto(b"goodbye", addr)
continue
soc.sendto(b"hello %s "% data,addr)
soc.close()
#客户端
sclient = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
addr = ("127.0.0.1",6000) while True:
data = input("please enter a word:")
if not data:
continue
sclient.sendto(data.encode(), addr)
responese, addr = sclient.recvfrom(1024)
print(responese.decode)
if responese == b'exit':
print("sesion is over from %s : %s"%addr)
breakpoint() sclient.close()

非常详细的UDP解析,来自:

https://www.freebuf.com/column/175176.html

最新文章

  1. bind绑定参数
  2. Macaca自动化测试之PC端测试
  3. eventbus实时更新
  4. 数据库使用数据泵迁移遇到LOB字段
  5. Baskets of Gold Coins_暴力
  6. 工程中建立多个src目录
  7. angularJs案例汇总
  8. go语言操作mysql范例(增删查改)
  9. Security » Authorization » 基于角色的授权
  10. android studio无法关联源码
  11. jQuery DOM操作之结点转移复制
  12. 编译kernel:内核makefile的作用
  13. [ An Ac a Day ^_^ ] hrbust 2291 Help C5 分形
  14. div.2/D. As Fast As Possible<数学题,二分>
  15. accp8.0转换教材第11章JAjax加护扩展理解与练习
  16. python中的2、8、16、10进制之间的转换
  17. Vue中ajax返回的结果赋值
  18. elasticsearch5之Elastalert 安装使用 配置邮件报警和微信报警
  19. java_manual的一点体会
  20. html中控制Tab键的顺序

热门文章

  1. Big Data(二)分布式文件系统那么多,为什么hadoop还需要一个hdfs文件系统?
  2. MySQL Select查询
  3. Java基本的程序结构设计 控制流程
  4. Vue项目的痛点
  5. Python分布式+云计算
  6. rmq——同步、异步、单向、rocketMQ console、消费模式
  7. 用java imageio调整图片DPI,例如从96调整为300
  8. mysql 普通用户与权限
  9. Linux基础教程 linux无密码ssh登录设置
  10. 苹果cms模板文件不存在:public/jump.html