- 1、本文档共42页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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);
}
此函数用来实现服务器端收到来自用户的搜索某个文件的请求之后,在服务器的文件列表中从头到尾搜索文件名包含有该名字
您可能关注的文档
- 合成名词常见的构词方法如下.ppt
- 合肥三模理.doc
- 合理的治疗癌症.ppt
- 合理规划抵御风险1.ppt
- 合肥市职工医疗保险特殊病核算方法 市属医保门诊特种.doc
- 合肥工业大学车辆工程考研必看.doc
- 合肥三模文.doc
- 合肥电梯.ppt
- 合肥市居住小区调研报告word档.doc
- 合规展业的要求代理制保险营销员的权利和义务.ppt
- 文稿autodesk vault family 2012简介brian intro介绍.pdf
- 旧版参考套课件圆锥体积.pptx
- 非刚性点设置注册上下文感知字段wang context-aware gaussian fields cvpr paper.pdf
- d 23模块电路轮廓expt mit电磁学02sc fall 2010.pdf
- 一章节数列极限.pdf
- 专题训练三语法专练.pdf
- catalog品牌简介inductionday edwin感应.pdf
- hka airbus lnf 4c30a check work package rev 7 dated 18 sep 2016HKA空中客车200B LNF4C30A检查工作包Rev 7期为.pdf
- 1999adaptive internal model control of nonlinear processes1999适应性模型控制非线性过程.pdf
- 设备调试记录存储.pdf
文档评论(0)