网络编程与分层协议设计

网络编程与分层协议设计

ID:15176484

大小:36.50 KB

页数:20页

时间:2018-08-01

网络编程与分层协议设计_第1页
网络编程与分层协议设计_第2页
网络编程与分层协议设计_第3页
网络编程与分层协议设计_第4页
网络编程与分层协议设计_第5页
资源描述:

《网络编程与分层协议设计》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、网络编程与分层协议设计篇一:网络编程与分层协议设计部分习题答案第2章Linux下C编程环境习题4信号忽略是指不对该信号做出任何响应,就犹如该信号没有发生过一样,进程不对其做任何处理.信号阻塞是指若在某一时刻该信号发生了,此时内核不会将该信号发送给进程,而是将该信号保存起来,待到该函数解除对该信号的阻塞之后,再发送给该进程进行处理.在信号受到阻塞和进程解除对该信号的阻塞,但信号还未到达进程之间的时间段,进程可以任意改变对该信号的处理.当然如果到该进程结束之时如果还没有解除阻塞的话对则该信号的处理和

2、忽略差不多习题5参见程序2_5.c习题6参见程序2_6.c习题720参见程序2_7.c和程序2_7_withmutex.c习题8此处第8行和第10行是可以交换的.当将其交换以后,首先执行pthread_cond_signal(&mqlock_ready),此时对于另一个之前因条件不满足的线程thread2_run感知到条件变量的变化,开始获取锁.类似于调用pthread_mutex_lock(&mqlock),而此时线程thread1_run尚未解除锁,因此前一个线程thread

3、2_run因无法获取锁而阻塞.随后线程thread1_run调用thread_mutex_unlock(&mqlock)释放锁.此时线程thread2_run得到锁,继续执行.当然对于其他的程序环境是否能够交换视具体环境而定.总得来说都对,不过都有缺陷(参看《Unix环境高级编程》P697-11.4)。习题9参见程序2_9.c第3章网络编程中常用的典型知识习题2参见程序3_2.c习题4structlen_and_flag{unsignedshortreserved:4,};hlen:4,

4、fin:1,syn:1,rst:1,psh:1,ack:1,urg:1,ece:1,20cwr:1;习题5可以将链表节点置于宿主的固定位置,例如宿主的首个元素位置,然后通过将指向链表节点的指针强制类型转换为宿主节点的地址。习题6参见程序3_6.c习题7先分析为什么要使用双向链表,而不使用单链表:考虑普通的单链表,如下:structnode{}假定a是某个单链表中的节点(structnodea),而b是刚定义的节点(structnodeb)structnode*next;对于这样的链表,在指定的节

5、点a后插入b很容易:b.next=a.next;a.next=&b;然而在指定的节点a前插入b却很麻烦;structnodehead;设head为头结点structnode*temp;20temp=&head;while(temp-next!=&a)temp=temp-&(转载于:wWW.xlTkWJ.Com小龙文档网:网络编程与分层协议设计)gt;next;得到a的前一个节点temp-next=&b;b.next=&a;将b插入temp与a之间这就花费了

6、一定的时间来搜索a的前一个节点,而linux要节省这部分时间.因此使用双向链表,这就决定一个节点应该含有两个指针(一个向前,一个向后)然后分析为什么prev要是用二级指针,而不使用一级指针:Linux内核中,除了有通用了双向链表,还有通用的哈希链表。后者定义与前者有些不同。因为通常一个哈希表的表头要占用很大空间,而如果每个表头都用一个双向链表来做的话,就显得太浪费了。只用一个指针可以实现相同的功能,并且可以节省一半的表头存储空间.因此这就决定表头只含有一个指针(向前)哈希链表定义如下:struc

7、thlist_head{structhlist_node*first;20}structhlist_node{structhlist_node*next,**pprev;}由于表头结构体hlist_head与节点结构体hlist_node的定义不一样,将使得我们的pprev指针无法直接指向hlist_head,那我们可以让其指向first。而要指向first则pprev必定为二级指针.习题8参见程序3_8.c习题9为了让notifier_chain_register函数的实参能够向主程序返回该函

8、数的处理后结果,该函数在设计上使用了2级指针。如果使用1级指针则无法通过实参带回改变后的结果。习题10在3.2中的程序可以按8比特进行加运算,这两种运算在逻辑上都是可行的,但是按8bit进行加运算,其加的次数差不多是按16bit的2倍,浪费了时间第4章20基础套接字习题1参见程序4_1.c习题2参见程序4_2.c习题3参见程序4_3.c习题4参见程序4_4.c习题5参见程序4_5.c习题6fprintf(stdout,Servergotconnectionfrom%sportnumber%u

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

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

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