龙空技术网

Python技术:socket编程之UDP编程

源码情报局 513

前言:

现时朋友们对“c语言udp”都比较讲究,看官们都想要了解一些“c语言udp”的相关内容。那么小编也在网上汇集了一些关于“c语言udp””的相关资讯,希望同学们能喜欢,你们一起来了解一下吧!

引言

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向目标地址发送数据;

标签: #c语言udp