技术分析基本 UDP 套接字编程

技术分析基本 UDP 套接字编程

ID:41037684

大小:191.71 KB

页数:8页

时间:2019-08-14

技术分析基本 UDP 套接字编程_第1页
技术分析基本 UDP 套接字编程_第2页
技术分析基本 UDP 套接字编程_第3页
技术分析基本 UDP 套接字编程_第4页
技术分析基本 UDP 套接字编程_第5页
资源描述:

《技术分析基本 UDP 套接字编程》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、技术分析:基本UDP套接字编程UDP协议和TCP协议不同,它是一种面向无连接、不可靠的传输层协议。在基于UDP套接字编程中,数据传输可用函数sendto和recvfrom。以下是基本UDP套接字编程过程:sendto与recvfrom函数这两个函数的功能类似于write和read函数,可用无连接的套接字编程。其定义如下:1./* 函数功能:发送数据;  2. * 返回值:若成功则返回已发送的字节数,若出错则返回-1;  3. * 函数原型:  4. */   5.#include   

2、 6.   7.ssize_t sendto(int sockfd, void *buff, size_t nbytes, int flags,   8.                const struct sockaddr *destaddr, socklen_t addrlen);   9.   10./* 说明:  11. * 该函数功能类似于write函数,除了有标识符flags和目的地址信息之外,其他参数一样;  12. *  13. * flags标识符取值如下:  14. * (1)MSG_DO

3、NTROUTE   勿将数据路由出本地网络  15. * (2)MSG_DONTWAIT    允许非阻塞操作  16. * (3)MSG_EOR         如果协议支持,此为记录结束  17. * (4)MSG_OOB         如果协议支持,发送带外数据  18. *  19. * 若sendto成功,则只是表示已将数据无错误的发送到网络,并不能保证正确到达对端;  20. * 该函数通过指定目标地址允许在无连接的套接字之间发送数据(例如UDP套接字);  21. */   22.   23. /

4、* 函数功能:接收数据;  24.  * 返回值:以字节计数的消息长度,若无可用消息或对方已经按序结束则返回0,若出错则返回-1;  25.  * 函数原型:  26.  */   27.#include    28.   29.ssize_t recvfrom(int sockfd, void *buff, size_t nbytes, int flags,   30.                struct sockaddr *addr, socklen_t *addrlen)

5、;   31. /* 说明:  32.  * 该函数功能与read类似;  1.  * 若addr为非空时,它将包含数据发送者的套接字地址;  2.  *  3.  * flags标识符取值如下:  4.  * (1)MSG_WAITALL     等待所有数据可用  5.  * (2)MSG_DONTWAIT    允许非阻塞操作  6.  * (3)MSG_PEEK        查看已读取的数据  7.  * (4)MSG_OOB         如果协议支持,发送带外数据  8.  */   基于UDP套

6、接字编程下面我们使用UDP协议实现简单的功能,客户端从标准输入读取数据并把它发送给服务器,服务器接收到数据并把该数据回射给客户端,然后客户端收到从服务器回射的数据把它显示到标准输出。其功能实现如下图所示:服务器程序1./* UDP 服务器 */   2.#include    3.#include    4.#include    5.#include    6.#include    7.#include 

7、   8.   9.#define SERV_PORT 9877 /* 通用端口号 */   10.   11.extern void err_sys(const char *, ...);   12.extern void dg_echo(int sockfd, struct sockaddr *addr, socklen_t addrlen);   13.   14.int main(int argc, char **argv)   15.{   16.    int sockfd

8、;   17.    int err;   1.    struct sockaddr_in servaddr, cliaddr;   2.   3.    /* 初始化服务器地址信息 */   4.    bzero(&servaddr, sizeof(servaddr));   5.    servaddr.sin_family = AF_INET;   6.    

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。