基于UDP的网络编程
2015-09-02 20:25
435 查看
与TCP编程相比较,UDP缺少了connect()、listen()及accept()函数,这是由于UDP协议无连接的特性,不用维护TCP的连接、断开等状态。
ssize_t recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlen);
第一个参数s表示正在监听的套接字文件描述符,由socke()生成。第二个参数buf表示接收数据缓冲区,接收的数据将放在这个指针指向的内存空间。第三个参数len表示接收数据缓冲区的大小,系统根据这个值来确保接收缓冲区的安全,防止溢出。第四个参数from是指向本地的数据结构socketaddr_in的指针,接收数据时发送方的地址信息放在这个结构中。第五个参数fromlen表示第四个参数所指内容的长度。
注:from和fromlen均为指针,注意进行取地址运算。
ssize_t recvfrom(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen);
第一个参数s表示正在监听的套接字文件描述符,由socke()生成。第二个参数buf表示发送数据缓冲区,发送的数据将放在这个指针指向的内存空间。第三个参数len表示发送数据缓冲区的大小。第四个参数from是指向目的主机的数据结构socketaddr_in的指针,接收数据的主机地址信息放在这个结构中。第五个参数fromlen表示第四个参数所指内容的长度。
UDP编程框图
API函数
socket(),bind()和TCP方式一样recvfrom/recv
原型:ssize_t recv(int s, void *buf, size_t len, int flags);ssize_t recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlen);
第一个参数s表示正在监听的套接字文件描述符,由socke()生成。第二个参数buf表示接收数据缓冲区,接收的数据将放在这个指针指向的内存空间。第三个参数len表示接收数据缓冲区的大小,系统根据这个值来确保接收缓冲区的安全,防止溢出。第四个参数from是指向本地的数据结构socketaddr_in的指针,接收数据时发送方的地址信息放在这个结构中。第五个参数fromlen表示第四个参数所指内容的长度。
注:from和fromlen均为指针,注意进行取地址运算。
sendto/send
原型:ssize_t send(int s, const void *buf, size_t len, int flags);ssize_t recvfrom(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen);
第一个参数s表示正在监听的套接字文件描述符,由socke()生成。第二个参数buf表示发送数据缓冲区,发送的数据将放在这个指针指向的内存空间。第三个参数len表示发送数据缓冲区的大小。第四个参数from是指向目的主机的数据结构socketaddr_in的指针,接收数据的主机地址信息放在这个结构中。第五个参数fromlen表示第四个参数所指内容的长度。
相关文章推荐
- 基于TCP的网络编程
- TCP协议
- 神经网络第三天
- 神经网络第五天
- 神经网络--第四天
- HTTP状态码说明
- TCP堵塞控制
- 黑马程序员之网络编程
- TCP协议疑难杂症全景解析
- 增加Linux最大打开文件数/文件描述符 https://www.centos.bz/2012/05/linux-increase-the-maximum-number-of-open-files/
- 分析HTTP请求返回304状态码
- HTTP Status 500 No adapter for handler
- android蓝牙和网络通信项目总结(一)
- Android提高第二十篇之MediaPlayer播放网络音频
- Http请求头整理
- TCP重新发送
- httpClient服务端编写
- Apt-cacher-ng 配置Linux代理网络
- 使用golang做http接口压力测试并输出到echarts散点图中
- Android(java)学习笔记204:自定义SmartImageView(继承自ImageView,扩展功能为自动获取网络路径图片)