计算机网络socket实验

计算机网络socket实验

ID:14387199

大小:152.96 KB

页数:9页

时间:2018-07-28

计算机网络socket实验_第1页
计算机网络socket实验_第2页
计算机网络socket实验_第3页
计算机网络socket实验_第4页
计算机网络socket实验_第5页
资源描述:

《计算机网络socket实验》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、计算机科学与技术《计算机网络》实验报告socket编程学院姓名学号(后边附有源代码地址)年月日计算机科学与技术Phase1:EstablishingClient-ServerCommunications1.题目要求此题目要求实现一个通过TCP套接字来建立连接的通讯,服务器和客户端需要实现以下5个功能:1.客户端与服务器建立连接,需要用户名和加密密码。2.客户端发送想分享的文件名给服务器。3.客户端发送一个想下载的文件查询。4.客户端显示收到的回复信息,并显示。5.登出。2.开发环境操作系统:Linux2.6.32-279.el6.x

2、86_64编程语言:C99编译器:GCC4.4.620120305(RedHat4.4.6-4)3.程序详解网络和I/O使用单线程利用epoll实现非阻塞异步IO。此部分功能主要用于实现多客户端的网络I/O的轮询处理,使用Linux内核中的EPOLL特性实现。维护一个哈希表(Client),用于将文件描述符与客户端数据(如接收缓冲区、发送缓冲区和会话状态等)进行映射。对应主要的功能函数包括:intnewclientid(intfd)用于在Client哈希表中创建新项,与提供的文件描述符(fd)对应。intfd2clientid(in

3、tfd)用于在Client哈希表中根据提供的文件描述符(fd)查找项目。voidsetnonblocking(intsock)设置SOCKET为非阻塞模式intserver_startup(u_shortport)在指定的端口上启动trackerd监听服务,并设置epollintpush_data(structclient_data*client,char*buf,intlen)向指定的客户端推送数据,会先进入客户端数据体内的发送缓冲区,再等待计算机科学与技术由epoll通知就绪时发送voidclose_client(intclie

4、ntid)关闭指定的客户端,释放资源intserver_loop()网络服务循环,调用epoll来接受连接和就绪通知,并监视连接中断,如有数据就绪则使用recv放入接收缓冲区,如通知发送就绪则将用send将发送缓冲区中的数据发送至客户端。对于新客户端连接,调用accept。以上操作都是非阻塞的。数据包处理inthandle_packet(structclient_data*client)立即处理接收缓冲区中的完整数据包(即以””结尾的消息),将处理完成的部分从缓冲区中移除intpush_packet(structclient_d

5、ata*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消

6、息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)

7、从指定的文件载入用户名和密码,每行一个,格式如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.程序流程图图1服务器计算机科学与技术图2客户端5程序源代码详

8、见“源码”文件夹中的“phase1”文件夹项目。Phase2:EstablishingPeer-PeerCommunications1.题目要求在Phase1的基础上,为客户端增加“PING发送/响应”和“文件请求/传输”功能。PIN

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

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

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