西工大计算机网络实验三.docxVIP

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
,. 实 验 报 告 实验名称 --SOCKET编程 一、实验目的 (1)加深对 TCP和 UDP的理解; (2)实现两台计算机之间 TCP/UDP通信。 二、实验过程 原理: socket 是在应用层和传输层之间的一个抽象层, 它把 TCP/IP层复杂的操作抽 象为几个简单的接口供应用层调用以实现进程在网络中通信。如下图所示: ;.. ,. TCP通信 原理如图: 代码: 服务器端: #pragma comment(lib, "WS2_32.lib") ;.. ,. #include<Winsock2.h> #include<iostream> #include<stdlib.h> using namespace std; int main() { int i=0; WSADATA wsaData; SOCKET oldSocket,newSocket; 客户地址长度 int iLen=0; 发送的数据长度 int iSend=0; 接收的 数据长度 int ircv =0; 处世要发送给客户的信息 char buf[20]="I am a server"; 接收来自用户的信息 char fromcli[512]; 客户和服务器的 SOCKET 地址结构 struct sockaddr_in ser,cli; if(WSAStartup(MAKEWORD(2,2),&wsaData)!=0) { cout<<"failed to load winsock"<<endl; return 0; } cout<<"server waiting"<<endl; cout<<"---------------"<<endl; 创建服务器端帧听 SOCKET oldSocket=socket(AF_INET,SOCK_STREAM,0); if(oldSocket==INVALID_SOCKET) { cout<<"socket() failed:"<<WSAGetLastError()<<endl; return 0; } 以下是建立服 务器端的 SOCKET 地址结构 ser.sin_family=AF_INET; ser.sin_port=htons(5050); 使用系 统指定的 ip 地址 INADDR_ANY ser.sin_addr.s_addr=htonl(INADDR_ANY); ser.sin_addr.s_addr= inet_addr("8"); if(bind(oldSocket,(LPSOCKADDR)&ser,sizeof(ser))==SOCKET_ERROR) { ;.. ,. cout<<"bind() failed:"<<WSAGetLastError()<<endl; return 0; } 进入侦听状态 if(listen(oldSocket,5)==SOCKET_ERROR) { cout<<"listen() failed:"<<WSAGetLastError()<<endl; return 0; } 接收客 户端的连接 iLen=sizeof(cli); newSocket=accept(oldSocket,(struct sockaddr*)&cli,&iLen);// 产生一个新的 SOCKET if(newSocket==INVALID_SOCKET) { cout<<"accept() failed:"<<WSAGetLastError()<<endl;// return 0; } 进入一个无限循环,等待客 户发送数据 while(1) { i++; 服务器初始化接收 缓冲区 memset(fromcli,0,512); ircv=recv(newSocket,fromcli,sizeof(fromcli),0); if(ircv==SOCKET_ERROR) { cout<<"rcv() failed:"<<WSAGetLastError()<<endl; break; } else if(ircv==0) break; else { cout<<"----- 服务器接收的 内容为--------"<<fromcli<<endl; } if(strcmp(fromcli,"quit")==0) break; } closesocket(newSocket); closesocket(oldSocket); WSACleanup(); } 客户端: ;.. ,. #pragma comment(lib, "WS2_32.lib") #include<winsock2.h> #include<iostream> #include<stdio.h> using namespace std

文档评论(0)

baoyue + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档