大家好,欢迎来到IT知识分享网。
引言
python作为一门胶水语言,可以在各个领域上作为快速开发的工具,大大提高开发者处理事务的效率。在互联网行业中,不管是对网络服务器的开发,还是对网络客户端,例如爬虫的开发中,都会涉及到底层的运行原理,那就是socket编程,那么今天,我们将对python下的socket编程开发中的UDP协议编程过程做一个介绍,通过本篇文章,可以让大家对网络编程中底层的UDP协议有一定的认识。
什么是UDP协议
UDP — 用户数据报协议,是一个无连接的简单的面向数据报的运输层协议。UDP不提供可靠性,它只是把应用程序传给IP层的数据包发送出去,但是并不能保证它们能到达目的地。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。
UDP是一种面向无连接的协议,每个数据包都是一个独立的信息,包括完整的源地址或目的地址,它在网络上以任何可能的路径传往目的地,因此能否到达目的地,到达目的地的时间以及内容的正确性都是不能被保证的。
UDP是面向消息的协议,通信时不需要建立连接,数据的传输自然是不可靠的,UDP一般用于多点通信和实时的数据业务,比如:
- 发送小尺寸数据(如对DNS服务器进行IP地址查询时)
- 在接收到数据,给出应答较困难的网络中使用UDP。(如:无线网络)
- 适合于广播/组播式通信中。
- MSN/QQ/Skype等即时通讯软件的点对点文本通讯以及音视频通讯通常采用UDP协议
流媒体、VOD、VoIP、IPTV等网络多媒体服务中通常采用UDP方式进行实时数据传输
UDP服务器编程
在python中,提供了一个socket模块,他里面封装了系统底层socket接口的python格式API,对于python开发者来说,只需要导入该模块就可以实现socket编程了。
根据C/S模型的要求,首先应该先有一个服务器,等待客户端的请求,然后再根据请求内容给予服务,那么UDP的服务器的设计流程就是:
1. 申请对象:从内核中申请一个具有UDP特性的socket对象;
2. 配置结构:用元组结构来表示服务器要监听的端口和IP地址;
3. 绑定结构:使用bind系统调用,向内核告知开放哪个端口和哪些IP地址;
4. 等待数据:使用recvfrom来接收数据,若没有收到数据,阻塞等待;
UDP客户端
有了服务器后,只需要设计一个客户端,向服务器发起请求,就完成了C/S的模型了。
那么UDP的客户端设计流程是:
1. 申请对象:从内核中申请一个具有UDP特性的socket对象;
2. 配置目标:作为客户端,需要知道服务器的身份信息,才可能向指定的地方发送数据;
3. 发送数据:使用sendto向目标地址发送数据;
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/47430.html