- 1、本文档共24页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
通信应用软件设计TP7-1.ppt
第六章 超越基本的套接字编程 目标 掌握如何获取、设置套接字选项的方法。 掌握信号的方式实现进程与进程,系统与进程之间的通信方式。 了解套接字编程中非阻塞套接字和异步I/O方式。 掌握进程与线程的基本概念和使用方法 掌握多路复用 了解多播和广播基本概念 概述 在前面的章节中我们编写了TCP和UDP通信的基本编程模式,但仅仅这些还不能写出比较完整和实用的通信程序。 我们必须将TCP/IP编程的知识进一步融入到Linux操作系统中,例如多任务处理、信号、广播等基本技术。 通过本章的学习,可以让我们写出真正的通信应用程序。 套接字选项(1) TCP/IP协议的开发者花了大量的时间考虑了可以满足大多数应用程序的默认行为。不过很少有一种“万能式”的设计能够适合各种应用。例如每个套接字都有一个关联的接收缓冲区,它应该是多大?默认值可能并不适合你的应用程序。 套接字行为的特定方面均与套接字的选项有关。可以通过修改关联的套接字选项的值,更改套接字的接收缓冲区大小。 RFC Request For Comments(RFC),是一系列以编号排定的文件。文件收集了有关互联网相关信息,以及UNIX和互联网社区的软件文件。目前RFC文件是由Internet Society(ISOC)赞助发行。基本的互联网通信协议都有在RFC文件内详细说明。RFC文件还额外加入许多的论题在标准内,例如对于互联网新开发的协议及发展中所有的记录。因此几乎所有的互联网标准都有收录在RFC文件之中。 套接字选项(2) 函数getsockopt()和setsockopt()分别用于查询和设置套接字选项: int getsockopt(int socket, int level, int optName, void char *optval, socklen_t *optLen) int setsockopt(int socket, int level, int optName, void char *optval, socklen_t *optLen) 套接字选项(3) 需要注意的是系统不保证传递给setsockopt的值是套接字所设置的新值,某些时候,这些设置的值并不能真正地影响系统的行为。 请仔细阅读课文p94页的注意事项。 信号(1) 信号提供了一种机制,用于通知程序发生了某些事件,例如用户输入了“中断字符”或者计时器到期。 当把信号递送到程序时,将发生以下4件事情之一: 忽略信号,进程永远不知道信号被递送。 程序被操作系统强行终止。 程序执行被中断,并且执行程序指定的信号处理例程。 信号被阻塞。即阻止信号起到任何作用,直至程序采取行到以允许递送它为止。 信号(2) UNIX具有许多不同的信号,每个信号都指示发生了不同类型的事件。每个信号都具有系统定义的默认行为。 TCP/IP编程中需要重点关注五种的信号: SIGALRM 报警计时器到期 SIGCHLD 子进程退出 SIGINT 中断字符(Ctrl+C)输入 SIGIO 套接字为I/O做好准备 SIGPIPE 尝试写到关闭的套接字 列出Linux中所有信号命令 信号(3) 应用程序可以使用函数sigaction()更改特定信号的默认行为。 int sigaction(int whichSignal, const struct sigaction *newAction, struct sigaction *oldAction) struct sigaction { void (*sa_handler)(int); //信号处理函数 sigset_t sa_mask; int sa_flags); 信号(4) signaction()函数调用成功返回0,如果失败返回-1。 如果指针oldAction不是null,就会把描述给定信号的以前行为的sigaction结构复制给newAction。 字段sa_handler的取值 SIG_IGN 忽略信号 SIG_DEF 使用信号的默认行为 函数地址,该函数有一个整型参数,表示信号值。 信号(5) sa_mask被实现为一组布尔值,其中每个标志用于一种信号。字段sa_mask指定处理whichSignal时要阻塞的信号。 int sigemptyset(sigset_t *set); int sigfillset(sigset_t *set); int sigaddset(sigset_t *set, int whichSignal); int sigdelset(sigset_t *set, int whichSignal); 非阻塞I/O(1) 套接字调用的默认行为是:一直阻塞到请求动作完成为止,例
您可能关注的文档
最近下载
- 重庆市中考数学模拟试卷及答案 (3).docx VIP
- 当代动画电影对中国神话的继承与创新—以《哪吒之魔童降世》为例.doc VIP
- 重庆市中考数学模拟试卷及答案 (4).docx VIP
- 2024年重庆市中考数学模拟试卷(附答案解析).pdf VIP
- 肩袖损伤护理查房课件.pptx
- 2025届高考语文二轮复习备考之作文回归教材.docx
- 膜片钳常见问题汇总(人人都会膜片钳).doc
- 《运动损伤与康复》王国祥 11第十一章 小腿、足踝部运动损伤与康复.ppt VIP
- 《运动损伤与康复》王国祥 10第十章 膝部运动损伤与康复.ppt VIP
- 《运动损伤与康复》王国祥 9第九章 骨盆、髋部和大腿部的损伤与康复.ppt VIP
文档评论(0)