基于udp协议通信的套接字

服务端

 from socket import *

 server = socket(AF_INET, SOCK_DGRAM)  # SOCK_DGRAM=>数据报协议
server.bind(('127.0.0.1', 8080)) print('start....')
while True:
data, client_addr = server.recvfrom(1024) # (b'hello', ('127.0.0.1', 49318))
server.sendto(data.upper(), client_addr) server.close()

客户端

 from socket import *

 client = socket(AF_INET, SOCK_DGRAM)  # SOCK_DGRAM=>数据报协议

 while True:
msg = input('>>: ').strip()
client.sendto(msg.encode('utf-8'), ('127.0.0.1', 8080))
data, server_addr = client.recvfrom(1024)
print(data) client.close()

数据报协议的特点1

当发送的数据报大于接收数据报的缓冲区大小时:

  在windows系统: 接收端会抛出异常

  在Linux系统: 接收端不会抛出异常, 会丢弃掉多余的数据

服务端

 from socket import *

 server = socket(AF_INET, SOCK_DGRAM)  # SOCK_DGRAM=>数据报协议
server.bind(('127.0.0.1', 8081)) server.recvfrom(1) >>>OSError: [WinError 10040] 一个在数据报套接字上发送的消息大于内部消息缓冲区或其他一些网络限制,或该用户用于接收数据报的缓冲区比数据报小。

客户端

 from socket import *

 client = socket(AF_INET, SOCK_DGRAM)  # SOCK_DGRAM=>数据报协议

 client.sendto(b'hello', ('127.0.0.1', 8081))

数据报协议的特点2

UDP协议没有粘包问题

UD协议能够稳定传输数据的最大数据量为512Bytes

服务端

 from socket import *

 server = socket(AF_INET, SOCK_DGRAM)  # SOCK_DGRAM=>数据报协议
server.bind(('127.0.0.1', 8081)) data1 = server.recvfrom(1024)
print('第一次接收: ', data1)
data2 = server.recvfrom(1024)
print('第二次接收: ', data2)
data3 = server.recvfrom(1024)
print('第三次接收: ', data3) >>>第一次接收: (b'hello', ('127.0.0.1', 55249))
>>>第二次接收: (b'world', ('127.0.0.1', 55249))
>>>第三次接收: (b'egon', ('127.0.0.1', 55249))

客户端

 from socket import *

 client = socket(AF_INET, SOCK_DGRAM)  # SOCK_DGRAM=>数据报协议

 client.sendto(b'hello', ('127.0.0.1', 8081))
client.sendto(b'world', ('127.0.0.1', 8081))
client.sendto(b'egon', ('127.0.0.1', 8081))

python UDP-数据报协议的更多相关文章

  1. Python 33(1) UDP协议 数据报协议 socketsever模块

    一:基于UDP协议通信的套接字  基于UDP协议 只要是套接字,在开发的过程中一定要有服务端和客户端. UDP协议说的就是数据报协议,也就是说,基于UDP协议来发数据,每发一个数据,都是带有报头的数据 ...

  2. 计算机网络协议,UDP数据报的分析

    一.UDP数据报的特点 1.基本特性 UDP是在IP数据报的基础上增加了复用和分用以及差错检测的功能 UDP的主要特点如下: UDP是无连接的:即发送数据之前不需要建立连接 UDP使用尽最大努力交付, ...

  3. UDP:用户数据报协议

    UDP是一个简单的面向数据报的运输层协议:进程的每个输出操作都正好产生一个UDP数据报,并组装成一份待发送的IP数据报.这与面向流字符的协议不同,如TCP,应用程序产生的全体数据与真正发送的单个IP数 ...

  4. 《TCP/IP详解卷1:协议》第11章 UDP:用户数据报协议-读书笔记

    章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP ...

  5. 【RL-TCPnet网络教程】第16章 UDP用户数据报协议基础知识

    第16章      UDP用户数据报协议基础知识 本章节为大家讲解UDP(User Datagram Protocol,用户数据报协议),需要大家对UDP有个基础的认识,方便后面章节UDP实战操作. ...

  6. udp用户数据报协议

    UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连接的传输层 ...

  7. 【TCP/IP详解 卷一:协议】第十一章 UDP 用户数据报协议

    11.1 引言 UDP 是一个简单的 面向数据报 的运输层协议:进程的每个 输出操作 都正好产生一个 UDP数据报,并且组装成一份待发送的IP数据报. 这与 TCP 不一样,它是 面向流字符 的协议, ...

  8. Python数据报协议以及sockersever模块的使用

    一.基于UDP协议的套接字 UDP协议 UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection,开放式 ...

  9. 《TCP/IP具体解释卷2:实现》笔记--UDP:用户数据报协议

    用户数据报协议.即UDP,是一个面向数据报的简单运输层协议:进程的每次输出操作仅仅产生一个UDP数据报,从而发送 一个IP数据报. 进程通过创建一个Internet域内的SOCK_DGRAM类型的插口 ...

  10. 运输层2——用户数据报协议UDP

    目录 1. UDP概述 2. UDP首部格式 3. UDP首部检验和计算方法 写在前面:本文章是针对<计算机网络第七版>的学习笔记 运输层1--运输层协议概述 运输层2--用户数据报协议U ...

随机推荐

  1. hdoj1028;他们说这题叫dp...

    #include<cstdio> #include<string> #include<iostream> #include<vector> #inclu ...

  2. sql server编写通用脚本自动检查两个不同服务器的新旧数据库的表结构差异

    问题:工作过程中,不管是什么项目,伴随着项目不断升级版本,对应的项目数据库业务版本也不断升级,数据库出现新增表.修改表.删除表.新增字段.修改字段.删除字段等变化,如果人工检查,数据库表和字段比较多的 ...

  3. python property的2种使用方法

    一.property类 class Person(): def __init__(self, name): self.set_name(name) def get_name(self): return ...

  4. mycat启动报错UnknownHostException(Temporary failure in name resolution)解决方法

    重启命令 ./mycat restart 查看日志 cd logs tail -f wrapper.log 报错信息 INFO | jvm 2 | 2018/05/09 11:28:28 | Erro ...

  5. day04 TimeZone类

  6. Hibernate通过实体对象对应数据库表信息

    Hibernate通过实体对象对应数据库表信息,包括:数据库表名称.主键列名.非主键列名等. 获取对象映射缓存管理类: AbstractEntityPersister aep = (AbstractE ...

  7. iOS7改变状态栏文字颜色

    1在Info.plist中设置UIViewControllerBasedStatusBarAppearance 为NO2 在需要改变状态栏颜色的 AppDelegate中在 didFinishLaun ...

  8. 1536 不一样的猜数游戏 dp思维 + 找规律

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1536 首先,要知道值为n的答案,则可以这么去想,知道值为n - 1的答案 ...

  9. AJPFX总结OpenJDK 和 HashMap大量数据处理时,避免垃圾回收延迟的技巧二

    HashMap简史 “Hash Code”这个概念第一次出现是在1953年1月的<Computing literature>中,H. P. Luhn  (1896-1964) 在一篇 IB ...

  10. 洛谷P2761 软件补丁问题(状压DP,SPFA)

    题意 描述不清... Sol 网络流24题里面怎么会有状压dp?? 真是狗血,不过还是简单吧. 直接用$f[sta]$表示当前状态为$sta$时的最小花费 转移的时候枚举一下哪一个补丁可以搞这个状态 ...