- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Linux/UNIX网络编程第04章 基本UDP套接口编程
UDP套接字编程 UDP套接字编程 实现UDP套接字基本步骤分为服务器端和客户端两部分: 服务器端 建立UDP套接字; 绑定套接字到特定地址; 等待并接收客户端信息; 处理客户端请求; 发送信息回客户端; 关闭套接字; UDP套接字编程(Cont.) 客户端步骤 建立UDP套接字; 发送信息给服务器; 接收来自服务器的信息; 关闭套接字 UDP套接字编程(Cont.) UDP数据传输函数-sendto #include sys/types.h #include sys/socket.h ssize_t sendto(int sockfd, const void *msg, size_t len, int flags, const struct sockaddr *to, int tolen); 返回:大于0-成功发送数据长度;-1-出错; UDP套接字使用无连接协议,因此必须使用sendto函数,指明目的地址; flags是传输控制标志,其值定义如下: 0:常规操作,如同write()函数; MSG_OOB:发送带外数据; MSG_DONTROUTE:忽略底层路由协议,直接发送。 UDP数据传输函数-recvfrom #include sys/types.h #include sys/socket.h ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr *from, int *fromlen); 返回:大于0-成功接收数据长度;-1-出错; UDP套接字使用无连接协议,因此必须使用recvfrom函数,指明源地址; flags是传输控制标志,其值定义如下: 0:常规操作,如同read()函数; MSG_PEEK:只察看数据而不读出数据; MSG_OOB:忽略常规数据,而只读取带外数据; from 和 fromlen 是“值-结果”参数。 UDP服务器模板 #include sys/types.h #include sys/socket.h #inlcude netinet/in.h int main(void) { int socketfd; if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) == -1) { perror(“Create socket failed.”); exit(1); } /* Bind socket to address */ …… loop { /* receive and process data from client */ …… /* send resuts to client */ } close(sockfd); } UDP客户模板 #include sys/types.h #include sys/socket.h #inlcude netinet/in.h int main(void) { int sockfd; if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) == -1) { perror(“Create socket failed.”); exit(1); } /* send data to the server */ …… /* receive data from the server */ …… close(sockfd); } UDP套接字例程 本例程分为服务器和客户两部分,主要完成如下功能: 服务器循环接收客户发来的消息,并显示客户IP地址和相应消息; 如果服务器收到”quit“,则退出循环,并关闭套接字; 客户向服务器发送消息,并接收服务器响应,显示该消息,并关闭套接字。 * * 内核 长度 套接口地址结构 用户进程 结果 值 当函数被调用时,结构大小是一值,当函数返回时,结构大小又是一个结果,这种参数类型叫值-结果参数。参数是一个整型指针。 bind(int sockfd, const struct sockaddr *addr, socklen_len len) recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr *from, int *fromlen) 值-结果参数说明
文档评论(0)