网站大量收购独家精品文档,联系QQ:2885784924

TCP IP 协议栈分析及实现.docx

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验报告 课程名称: TCP/IP 协议栈分析与实现 学生姓名: 郭勇 专业: 信息工程 学号: 201005010718 同组学生姓名:无 实验地点 :6C601 指导老师: 刘飚 实验日期: 2013年3月25日 实验一: 实验项目名称: Linux 内核通用链表的使用 一、 实验目的和要求: 学习 Linux 内核的通用链表的设计原理,熟练掌握 Linux 内核通用链表的使用。 二、 实验内容 1. 掌握 Linux 通用链表的创建 2. 掌握通用链表增加元素、删除元素和遍历链表的方法。 三、 实验要求 1. 待创建的链表头变量名为 user_queue。 2. 作为链表的宿主节点类型定义如下: struct user { int id;/* user id */ struct list_head list; } 3. 针对上述 user_queue 链表, 要求以队列方式向其中依次添加 10 个类型为 struct user 的宿主节点,并要求这 10 个宿主节点的 id 依次为 1-10 4. 依次遍历输出这 10 个宿主节点的 id 5. 从队列中删除首个宿主节点,然后依次遍历该队列并输出余下各宿主节点的 id 值 四、 实现原理 Linux 的内核源文件 list.h 提供了所有的链表定义、各类操作接口及其实现。其中 创建链表的方法如下: LIST_HEAD(my_list); 内核源文件 list.h 中定义了以下若干接口,用于对通用链表进行各类操作: 1) 在指定的 head 后插入新节点,常用于堆栈数据结构的实现 // @new: 即将添加的新链表节点 // @head: 在此节点后添加 list_add(struct list_head *new, struct list_head *head); 2) 在指定的 head 前插入新节点,常用于队列数据结构的实现 // @new: 即将添加的新链表节点 // @head: 在此节点前添加 list_add_tail(struct list_head *new, struct list_head *head) 3) 从链表中删除一个指定节点 // @entry: 要从链表中删除的链表节点 list_del(struct list_head *entry) 4) 根据当前链表节点指针 ptr 获得宿主节点指针 // * @ptr: struct list_head 类型的指针 // * @type: 链表节点所在的宿主节点的类型 // * @member: 嵌入宿主的链表节点的变量名 list_entry(ptr, type, member) 5) 遍历链表 // @pos: 遍历链表时用于指示正在遍历的链表节点的指针 // @head: 链表头 list_for_each(pos, head) 五、 实现代码和运行结果 #includestdio.h #includestdlib.h #include list.h LIST_HEAD(user_quene); struct user{ int id;/*user id*/ struct list_head list; }; int main() { struct user uid[10]; struct list_head *pos; int i; for(i=0;i10;i++){ list_add_tail((uid[i].list),user_quene); uid[i].id=i+1; } list_for_each(pos,user_quene) printf(%d ,list_entry(pos,struct user,list)-id); printf(\n); list_del((uid[0].list)); list_for_each(pos,user_quene) printf(%d ,list_entry(pos,struct user,list)-id); printf(\n); return 0; } 实验二、 实验项目名称: Linux 内核通用哈希链表的使用 一、 实验目的和要求: 学习 Linux 内核的通用哈希链表的设计原理, 熟练掌握 Linux 内核通用哈希链表的使用。 二、 实验内容 1. 掌握 Linux 通用哈希链表的创建 2. 掌握通用哈希表增加元素、查找元素的方法。 三、 1. 实验要求 待创建的哈希表头数组为 struct hlist_head user_hash[16],要求对哈希表宿主元素的 name 成员的值进行散列,并将散列

文档评论(0)

187****5045 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档