第04章 UDP套接字编程基础.ppt

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第4章 UDP套接字编程 * UDP套接字编程 实现UDP套接字基本步骤分为服务器端和客户端两部分: 服务器端 建立UDP套接字; 绑定套接字到特定地址; 等待并接收客户端信息; 处理客户端请求; 发送信息回客户端; 关闭套接字; * UDP套接字编程 客户端步骤 建立UDP套接字; 发送信息给服务器; 接收来自服务器的信息; 关闭套接字 * UDP套接字编程 * 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数据传输函数-sendto * 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 UDP套接字使用无连接协议,因此必须使用recvfrom函数,指明源地址; flags是传输控制标志,其值定义如下: 0:常规操作,如同read()函数; MSG_PEEK:只察看数据而不读出数据; MSG_OOB:忽略常规数据,而只读取带外数据; from 和 fromlen 是“值-结果”参数。 * 内核 长度 套接口地址结构 用户进程 结果 值 当函数被调用时,结构大小是一值,当函数返回时,结构大小又是一个结果,这种参数类型叫值-结果参数。参数是一个整型指针。 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) 值-结果参数说明 * 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“,则退出循环,并关闭套接字; 客户向服务器发送消息,并接收服务器响应,显示该消息,并关闭套接字。 * * * * * * * * * * *

文档评论(0)

精品报告 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档