版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机科学与技术《计算机网络》实验报告socket编程学院姓名学号(后边附有源代码地址)年月日Phase1:EstablishingClient-ServerCommunications题目要求此题目要求实现一个通过TCP套接字来建立连接的通讯,服务器和客户端需要实现以下5个功能:客户端与服务器建立连接,需要用户名和加密密码。客户端发送想分享的文件名给服务器。客户端发送一个想下载的文件查询。客户端显示收到的回复信息,并显示。登出。开发环境操作系统:Linux2.6.32-279.el6.x86_64编程语言:C99编译器:GCC4.4.620120305(RedHat4.4.6-4)程序详解网络和I/O使用单线程利用epoll实现非阻塞异步IO。此部分功能主要用于实现多客户端的网络I/O的轮询处理,使用Linux内核中的EPOLL特性实现。维护一个哈希表(Client),用于将文件描述符与客户端数据(如接收缓冲区、发送缓冲区和会话状态等)进行映射。对应主要的功能函数包括:intnewclientid(intfd)用于在Client哈希表中创建新项,与提供的文件描述符(fd)对应。intfd2clientid(intfd)用于在Client哈希表中根据提供的文件描述符(fd)查找项目。voidsetnonblocking(intsock)设置SOCKET为非阻塞模式intserver_startup(u_shortport)在指定的端口上启动trackerd监听服务,并设置epollintpush_data(structclient_data*client,char*buf,intlen)向指定的客户端推送数据,会先进入客户端数据体内的发送缓冲区,再等待由epoll通知就绪时发送voidclose_client(intclientid)关闭指定的客户端,释放资源intserver_loop()网络服务循环,调用epoll来接受连接和就绪通知,并监视连接中断,如有数据就绪则使用recv放入接收缓冲区,如通知发送就绪则将用send将发送缓冲区中的数据发送至客户端。对于新客户端连接,调用accept。以上操作都是非阻塞的。数据包处理inthandle_packet(structclient_data*client)立即处理接收缓冲区中的完整数据包(即以”\n”结尾的消息),将处理完成的部分从缓冲区中移除intpush_packet(structclient_data*client,charconst*fmt,...)按指定的格式化方式向客户端发送数据包,是push_data的上层封装inthandle_share(structclient_data*client,char*command,intlen)处理SHRE消息inthandle_search(structclient_data*client,char*command,intlen)处理SRCH消息inthandle_quit(structclient_data*client,char*command,intlen)处理QUIT消息inthandle_login(structclient_data*client,char*command,intlen)处理LGIN消息inthandle_command(structclient_data*client,char*command,intlen)核心消息分发函数,将根据消息前4字节判断消息类型,并调用相应处理函数进行实际处理用户模块intuser_check(char*username,char*password)验证指定的用户名密码,正确返回0,否则返回-1intuser_load(char*htpasswd)从指定的文件载入用户名和密码,每行一个,格式如user:pwd文件列表模块intshare_add(char*ipaddr,char*port,char*name,char*owner)添加新的文件分享structfile_share*share_get_head()获取第一个文件分享(这是一个链表,获取链表中的表头)intshare_remove_by_owner(char*owner)删除由特定用户发布的文件分享(用来在用户断开连接或QUIT时清理)程序流程图图1服务器图2 客户端5程序源代码 详见“源码”文件夹中的“phase1”文件夹项目。Phase2:EstablishingPeer-PeerCommunications题目要求在Phase1的基础上,为客户端增加“PING发送/响应”和“文件请求/传输”功能。PING发送/响应:通过UDP协议发送数据包到PEER,PEER在收到后立即回复,以此测定RTT。文件请求/传输:PEER将作为服务器提供文件分享功能,接受来自其它PEER的连接,处理LGIN和GETF请求,将文件传输给其它PEER。开发环境操作系统:Linux2.6.32-279.el6.x86_64编程语言:C99编译器:GCC4.4.620120305(RedHat4.4.6-4)程序详解PING接收模块(pingd)用来提供职守服务,接受PING数据包并立即响应功能函数包括:intpingd_startup(u_shortport)在指定UDP端口上启用PING职守服务,使用EPOLL轮询接受数据包,目前将使用与filed相同的端口号提供服务(TCP与UDP可使用相同的端口号)intpingd_loop()PING服务循环,调用epoll来接收数据包通知,如有数据则立即发送响应PING发送模块(ping)用来发送PING数据包,并获取RTT时间功能函数包括:intping(char*ipaddr,u_shortport)向指定的IP地址和端口发送PING数据包,在时限内等待返回,并返回RTT时间(毫秒)文件服务器(filed)与trackerd架构相似,提供一对多的P2P文件传输TCP服务器。使用单线程利用epoll实现非阻塞异步IO。功能函数包括:intnewpeerid(intfd)用于在Peer哈希表中创建新项,与提供的文件描述符(fd)对应。intfd2peerid(intfd)用于在Peer哈希表中根据提供的文件描述符(fd)查找项目。voidsetnonblocking(intsock)设置SOCKET为非阻塞模式intfiled_startup(u_shortport)在指定的端口上启动filed监听服务,并设置epoll。目前传入的参数为0,因此filed将随机监听一个端口作为服务(如果固定的话可能出现地址被占用)intfiled_push_data(structclient_data*client,char*buf,intlen)向指定的Peer推送数据,会先进入客户端数据体内的发送缓冲区,再等待由epoll通知就绪时发送voidclose_peer(intclientid)关闭指定的Peer连接,释放资源intfiled_loop()网络服务循环,调用epoll来接受连接和就绪通知,并监视连接中断,如有数据就绪则放入接收缓冲区,如通知发送就绪则将发送缓冲区中的数据发送至客户端,与trackerd不同的是,这里要处理文件发送过程,使用内核特性提供的sendfile()函数实现零拷贝发送,逻辑上即从文件读取一部分并发送,然后等待下次发送就绪时再发送下一部分,直到EOF时,发送preamble\n并恢复文件发送标志u_shortfiled_get_port()获取filed目前监听的端口号intfiled_add_share(char*filename)添加新的文件分享,以便在其它PEER请求时验证合法性char*filed_get_share_path(char*filename)获取文件分享时,文件名对应的完整路径。如果没有经过add则返回NULL文件请求模块(file)用来连接filed实现文件传输和保存功能函数包括:intfile_recv()文件请求过程,负责发送LGIN,等待LRES,发送GETF,解析FILE指令,打开并写入文件,关闭连接intfile_fetch(structfile_item*item)初始化文件请求,负责建立和关闭到filed的连接后台服务(background)执行在子线程中,负责处理服务循环功能函数包括:i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 物流公司协警服务规范
- 制药业防水防腐施工合同
- 城市广场压桩施工协议
- 协调部工作计划制定
- 公共交通系统聘用合同指南
- 军事加油站计量管理手册
- 商业区更新拆迁现场管理策略
- 办公园区饮料店租赁协议样本
- 机场大巴驾驶员聘用协议
- 运动品牌固定资产管理试行办法
- 【物理】2024-2025学年人教版物理八年级上册 期末复习计算题
- 总经理助理招聘面试题与参考回答
- 旧楼加固改造施工组织设计方案
- 中国武器课件教学课件
- 【供应链管理相关理论和文献综述6200字】
- 《世说新语》整本书阅读导读
- 大学生防艾健康教育学习通超星期末考试答案章节答案2024年
- 《机械制图》复习题库及答案2
- 2024年医院会计制度岗位职责(二篇)
- 吉林市2024-2025学年度高三第一次模拟测试 (一模)英语试卷(含答案解析)
- 2024-2030年中国美妆工具市场应用趋势分析与前景销售格局研究报告
评论
0/150
提交评论