python 之 网络编程(基于UDP协议的套接字通信)
2019-07-24 09:25:40来源:博客园 阅读 ()
8.5 基于UDP协议的套接字通信
缺点:不可靠:发送数据,无需确认,容易丢包
udp服务端
1 ss = socket() #创建一个服务器的套接字 2 ss.bind() #绑定服务器套接字 3 inf_loop: #服务器无限循环 4 cs = ss.recvfrom()/ss.sendto() # 对话(接收与发送) 5 ss.close() # 关闭服务器套接字
udp客户端
cs = socket() # 创建客户套接字 comm_loop: # 通讯循环 cs.sendto()/cs.recvfrom() # 对话(发送/接收) cs.close() # 关闭客户套接字
8.6 客户端与服务端操作( 基于UDP )
服务端:
import socket #地址家族,基于网络 # 数据报协议 server=socket.socket(socket.AF_INET,socket.SOCK_DGRAM) server.bind(('127.0.0.1',8080)) #把地址绑定到套接字(0-65535) 0-1024给系统用的 ? while True: client_data,client_addr=server.recvfrom(1024)#收消息,1024是一个最大的限制 print(client_data.decode('utf-8')) msg=input('回复%s:%s>>>:' %(client_addr[0],client_addr[1])) server.sendto(msg.encode('utf-8'),client_addr)
客户端:
import socket ? client=socket.socket(socket.AF_INET,socket.SOCK_DGRAM) # 数据报协议 ? while True: msg=input('>>>: ').strip() client.sendto(msg.encode('utf-8'),('127.0.0.1',8080)) res,server_addr=client.recvfrom(1024) #收消息 print(res.decode('utf-8'))
8.7 数据报协议没有粘包问题
udp的recvfrom是阻塞的,一个recvfrom(x)必须对唯一一个sendinto(y),收完了x个字节的数据就算完成,若是y>x数据就丢失,这意味着udp根本不会粘包,但是会丢数据,不可靠
每个UDP包中就有了消息头(消息来源地址,端口等信息),这样对于接收端来说,就容易进行区分处理了。 即面向消息的通信是有消息保护边界的。
服务端:
import socket ? server=socket.socket(socket.AF_INET,socket.SOCK_DGRAM) # 数据报协议 server.bind(('127.0.0.1',8080)) ? res1,client_addr=server.recvfrom(1) #b'h' print(res1) ? res2,client_addr=server.recvfrom(2) #b'wo' print(res2) ? res3,client_addr=server.recvfrom(3) #b'ego' print(res3)
客户端:
import socket ? client=socket.socket(socket.AF_INET,socket.SOCK_DGRAM) # 数据报协议 ? client.sendto(b'hello',('127.0.0.1',8080)) client.sendto(b'world',('127.0.0.1',8080)) client.sendto(b'egon',('127.0.0.1',8080))
原文链接:https://www.cnblogs.com/mylu/p/11203862.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- python3基础之“术语表(2)” 2019-08-13
- python3 之 字符串编码小结(Unicode、utf-8、gbk、gb2312等 2019-08-13
- Python3安装impala 2019-08-13
- 小白如何入门 Python 爬虫? 2019-08-13
- python_字符串方法 2019-08-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash