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

吴尚_计算机网络编程实验报告.doc

  1. 1、本文档共42页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
吴尚_计算机网络编程实验报告

计算机网络编程实验报告 学 院 计算机学 专 业 计算机科学与技术 年 级 2010级 姓 名 吴尚 学 号 3010216080 2012年 4 月 25日 Phase 1: Establishing Client-Server Communications 题目要求 此题目要求利用TCP套接字编程建立一个服务端与客户端进行通信的网络,在建立TCP连接的基础上实现报文的交换以及报文的处理。在本实验中,要利用TCP套接字编程在集中式的P2P网络架构中建立一个P2P客户端,其中由一个中心服务器负责保存并维护整个网络中的文件。当一个用户想要在网络中搜索一个文件,只需要向中心服务器发送一个请求,服务器在中心数据库中运行请求,并返回文件及其所在位置的列表。用户可以指定想要下载的文件,与该文件拥有者的连接就会被打开。 本阶段P2P的客户端要与P2P的服务端进行交互,并实现以下5个主要功能: 服务器验证(提供用户名和加密的密码) 将想要分享给其他用户的文件列表发送给服务器 发送请求给服务器,搜索想要下载的一个文件。 服务器接收请求并解析,将搜索结果反馈给用户。 登出。 开发环境 操作系统:Windows XP 编程语言:C++ 编译环境:Microsoft Visual C++ 6.0 程序详解 3.1服务器端程序描述 3.1.1基本功能 此部分主要包括完成网络通信所必要的服务器端的基本功能,主要的功能函数包括: (1)WSASocket(AF_INET,SOCK_STREAM,IPPROTO_TCP,NULL, 0,WSA_FLAG_OVERLAPPED); winsock2.h 头文件和链接wsock32.lib库。 (2)bind( listenSocket,(SOCKADDR*) saServer, sizeof(SOCKADDR) ); 这个函数主要实现了将本地地址与套接口进行捆绑。 (3)listen(listenSocket, 10 )void SendShareFile(char recvbuf[],SOCKET sock) { char sendbuf[BUFFSIZE]=; char recvTemp[BUFFSIZE]=; int j; string subfile=; for(j=4;recvbuf[j]!=\n;j++) { subfile=subfile+recvbuf[j]; } coutsubfileendl; CString temp; temp.Format(%s,subfile.c_str()); //couttempendl; int ret; for(int i=0;ifileInfoIndex;i++) { if(FileName[i].Find(temp,0)!=-1||subfile==*.txt) { CString resultMsg=(SRES,+FileName[i]+#+jerry+#+IPList[i]+#+PortList[i]+\n); strcpy(sendbuf,resultMsg); ret = send(sock,sendbuf,strlen(sendbuf),0); if(ret == SOCKET_ERROR) { coutsend() failed:WSAGetLastError()endl; break; } } memset(sendbuf,0,BUFFSIZE); ret = recv(sock,recvTemp,BUFFSIZE,0); //从客户端接受ok,证明客户端已收到 coutrecvTempendl; memset(recvTemp,0,BUFFSIZE); } //已发送完毕 strcpy(sendbuf,SRES\n); ret = send(sock,sendbuf,strlen(sendbuf),0); if(ret == SOCKET_ERROR) { coutsend() failed:WSAGetLastError()endl; return; } memset(sendbuf,0,BUFFSIZE); } 此函数用来实现服务器端收到来自用户的搜索某个文件的请求之后,在服务器的文件列表中从头到尾搜索文件名包含有该名字

文档评论(0)

zhuliyan1314 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档