发布于2019-08-06 11:39 阅读(778) 评论(0) 点赞(1) 收藏(0)
UDP协议:数据报协议 特点:无连接,一发对应一收,先启动哪一端都不会报错 优点:发送效率高,但有效传输的数据量最多为500bytes
缺点:不可靠:发送数据,无需确认,容易丢包
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() # 关闭客户套接字
服务端:
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'))
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))
作者:python是我的菜
链接:https://www.pythonheidong.com/blog/article/8460/dc7647b4476bca9699f9/
来源:python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!