计算机网络课程设计报告07872

上传人:jiups****uk12 文档编号:45066909 上传时间:2018-06-15 格式:DOC 页数:17 大小:329.01KB
返回 下载 相关 举报
计算机网络课程设计报告07872_第1页
第1页 / 共17页
计算机网络课程设计报告07872_第2页
第2页 / 共17页
计算机网络课程设计报告07872_第3页
第3页 / 共17页
计算机网络课程设计报告07872_第4页
第4页 / 共17页
计算机网络课程设计报告07872_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《计算机网络课程设计报告07872》由会员分享,可在线阅读,更多相关《计算机网络课程设计报告07872(17页珍藏版)》请在金锄头文库上搜索。

1、- 1 -河南理工大学 计算机科学与技术学院 课程设计报告200 11 200 12 学年第 二 学期课程名称: 计算机网络 设计题目: 文件传输协议的简单设计与实现 学生姓名: 学 号: return (-1);创建本地套接字在网络应用程序之间的通信是通过套接字来实现的,连个网络应用程序之间的每条通信链路两端都需要有相应的套接字,并且服务器程序还需要一个侦听套接字来接收客户机程序的连接请求。因此,在设计网络应用程序时,都必须创建自己的本地套接字,对于服务器层序来说既要创建侦听套接字,在接收到客户机程序的连接请求后还需要建立与该客户机程序的通信连接套接字。- 9 -客户机:客户机程序中的通信套

2、接字既可以显示指定 IP 和端口,也可以由系统自动指定,实现代码如下:、创建用于连接的套接字1sockClient=socket(AF_INET,SOCK_STREAM,0);if(sockClient=INVALID_SOCKET)printf(“sock create fail! n“);WSACleanup();return(-1);addrServer.sin_family=AF_INET;addrServer.sin_addr.s_addr=inet_addr(IP);addrServer.sin_port=htons(PORT);、请求连接服务器2if(connect(sockCl

3、ient,(struct sockaddr*)memset(IP,0,20);return(-2);服务器:服务器程序可能存在多个套接字。由于侦听套接字往往需要使用熟知端口,因此侦听套接字一般需要与本地 IP 和端口号进行显示绑定,其实现代码如下:、创建用于侦听的套接字1sockSrv=socket(AF_INET,SOCK_STREAM,0);if(sockSrv=SOCKET_ERROR)- 10 -printf(“socket create failed ! n“);WSACleanup();return(-1);、指定 IP 地址和端口号2SOCKADDR_IN addrSrv;add

4、rSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);addrSrv.sin_port=htons(PORT);addrSrv.sin_family=AF_INET;、绑定本机主机 IP 和端口号3if(bind(sockSrv,(struct sockaddr FAR *)return(-1);侦听侦听即服务器程序进入等待客户机程序连接请求的状态,往往通过一个具有熟知端口的套接字来等待客户机程序的连接请求。该过程通过 WinSock 中的listen 函数来实现。核心代码如下:if(listen(sockSrv,5)0) printf(“Listen err

5、or!“);return(-1);建立连接建立连接的请求首先由客户机程序利用 connect 函数向服务器程序中的侦听套接字提出,当侦听套接字得到客户机程序的连接请求后,可以利用 accept函数接收其请求,并得到一个与该客户机请求相对应的连接套接字。这样,双方便建立了通信连接。由于考虑到服务器程序可能需要与多个客户机程序建立- 11 -不同的通信连接。因此在服务器程序中往往通过循环来实现对客户机连接请求的响应。服务器程序实现代码如下:服务器程序连接请求:While(1) SOCKET sockconn=accept(sockSrv,(SOCKADDR*)if(sockconn=INVALID

6、_SOCKET)continue;else printf(“connecting from clientn“);响应成功后,accept 函数将返回一个连接套接字,以后服务程序便可利用该套接字与相应的客户机程序之间进行数据传递操作。数据传递当通信双方建立了通信连接后,便可以通过各自的连接套接字进行数据的发送(send)与接收(recv)操作。服务器端程序接收客户机程序发过来的数据,代码如下:if(recv(sockconn,buf_rec,1024,0)=0)break; 客户机程序则在连接请求成功后,向服务器发送相应的信息,对于本设计而言,就是对服务器端发送相应的命令操作。并接收服务器发送过

7、来的处理信息。代码如下:if(send(sockClient,buf_send,sizeof(buf_send),0)0)cout“send data error!“endl;closesocket(sockClient);WSACleanup();return 0;- 12 -if(strncmp(command,“quit“,4)=0)closesocket(sockClient);WSACleanup();return 0;/quitrecv(sockClient,buf_rec,1024,0);coutbuf_recendl;关闭连接当通信双方通信完成后,便可以利用 closesock

8、et 函数来关闭连接套接字,以关闭所建立起来的通信连接并四方相关资源。实现代码在服务器程序与客户机程序中都类似,只是所关闭的练级套接字不同,代码如下:客户机:closesocket(sockClient);服务器:closesocket(sockconn);关闭侦听如果服务器要退出侦听,则可以利用 closesocket 函数来关闭侦听套接字,代码如下:closesocket(socksrv);终止 WinSock在通信双方结束运行之前,需要调用 WSACleanup 函数来终止 WinSock,以便释放 WINSock 所占据的相关系统资源,代码如下:WSACleanup();四、程序运行说

9、明及功能四、程序运行说明及功能1、 先运行服务器端程序进行侦听2、 运行客户机程序。、输入“?”或“help”显示命令菜单1- 13 -、输入服务器端 IP 地址进行连接。若服务器端程序与客户机程序是在同一台2PC 机上运行的,则此时输入的服务器端 IP 地址应为 127.0.0.1;若服务器端程序与客户机程序在不同的 PC 机上运行,则此时输入的服务器端的 IP 地址应为运行服务器程序的 PC 机的 IP 地址,如:218.196.240.8。如果与服务器连接成功,则在服务器端显示”connecting from client” 。、输入要执行的命令。本程序可以完成六个简单命令的操作。3六个

10、命令: dir 命令此命令可以显示出当前目录中的所有文件列表。 cd 命令cd + 路径名。切换到某个指定的路径下,路径可以是相对路径也可以是绝对路径。 pwd 命令显示当前工作路径。 get 命令get + 文件名。从服务器上下载文件到客户机程序那个相应目录中,如:C:Documents and SettingsAdministrator桌面计算机网络课程设计FTPftpclient。 put 命令put + 文件名。将客户机程序所在目录(如:C: Documents and SettingsAdministrator桌面计算机网络课程设计FTPftpclient )下的某个文件上传到运行服

11、务器端程序 PC 机上的某个目录下。 quit 命令此命令客户机关闭 WinSock 连接,并与服务器的断开连接, 。服务器端受到- 14 -该命令后会先关闭侦听,再关闭 WinSock 连接。、服务器接收到客户机发送过来的命令操作请求,在服务器端显示“the 4command is .” ,执行相应的操作,并将结果发送给客户机。在客户机上显示相应的结果。五、截图五、截图1、程序执行前 C: Documents and SettingsAdministrator桌面计算机网络课程设计FTPftpclient 目录下文件截图2、程序执行前 C: Documents and SettingsAdm

12、inistrator桌面计算机网络课程设计FTPftpserver 目录下文件截图- 15 -3、 执行程序操作截图4、 程序执行 get 命令后 C: Documents and SettingsAdministrator桌面计算机网络课程设计FTPftpclient 目录下文件截图- 16 -5、 继续执行操作a.txt 文件在 client 文件夹里,执行 put a.txt 命令后,就将文件上传到server 文件夹里去了。6、 服务器端运行截图- 17 -六、心得体会六、心得体会通过本次课程设计,我对网络命令有了一定的概念性认识,并熟悉了基本网络命令的使用;通过 Client/Ser

13、ver 设计的实践,了解了 SOCKET 编程相关的一些知识以及用法;了解了客户端和服务器端进行通信的相关算法机制,加深了对 TCP/IP 协议的工作原理的理解;在建立通信的基础上,实现了一些简单的功能。限于自己的能力,对 SOCKET 编程理解还不够透彻,对网络通信也只局限Client/Server 实验的相关内容,还有待进一步的学习和实践以达到对网络的通信机制更深层次的理解。七、参考文献七、参考文献1、 李峰, 陈向益. TCP/IP 协议分析与应用编程. 人民邮电出版社 20082、 谢希仁. 计算机网络(第五版). 电子工业出版社 20093、 王洪涛. 深入剖析 Visual C+. 人民邮电出版社 20034、 谭浩强. C 程序设计. 清华大学出版社 2005

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号