计算机网络实验TCP客户端以及服务端socket编程_第1页
计算机网络实验TCP客户端以及服务端socket编程_第2页
计算机网络实验TCP客户端以及服务端socket编程_第3页
计算机网络实验TCP客户端以及服务端socket编程_第4页
计算机网络实验TCP客户端以及服务端socket编程_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验三TCPsocket编程1316-30-何珊珊[实验名称]:TCPsocket编程[实验器材]:与因特网连接的计算机网络系统;主机操作系统为Windows7;VC6[实验内容]:学生自由选择实验平台:windows平台或者linux平台,编程实现客户端和服务端的TCP链接,通讯内容学生姓名和学号。[实验步骤]:在VC6下建立两个工程,一个为TCPSrv,一个为TCPClient,并在工程->设置->连接中加入ws2_32.lib库;编写TCPSrv,代码如下:#include<Winsock2.h>#include<stdio.h>#include<errno.h>voidmain(){//用WSAStartup函数加载套接字库,并进行版本协商 WORDwVersionRequested; WSADATAwsaData; interr; wVersionRequested=MAKEWORD(2,2);//版本号 err=WSAStartup(wVersionRequested,&wsaData); if(err!=0){ /*Telltheuserthatwecouldnotfindausable*/ /*WinSockDLL.*/ return; } /*ConfirmthattheWinSockDLLsupports2.2.*/ /*NotethatiftheDLLsupportsversionsgreater*/ /*than2.2inadditionto2.2,itwillstillreturn*/ /*2.2inwVersionsincethatistheversionwe*/ /*requested.*/ if(LOBYTE(wsaData.wVersion)!=2||HIBYTE(wsaData.wVersion)!=2){ /*Telltheuserthatwecouldnotfindausable*/ /*WinSockDLL.*/ WSACleanup(); return; }//copy自msdn SOCKETsocketSrv=socket(AF_INET,SOCK_STREAM,0);//创建一个客户端的套接字 if((socketSrv=socket(AF_INET,SOCK_STREAM,0))==-1){perror("socket创建出错!"); exit(1); }sockaddr_inaddrSrv;//配置服务端地址信息addrSrv.sin_addr.S_un.S_addr=INADDR_ANY;//本机IP地址addrSrv.sin_family=AF_INET;//地址族addrSrv.sin_port=htons(3333);//端口号,并用htons装换成网络字节序bind(socketSrv,(structsockaddr*)&addrSrv,sizeof(structsockaddr));//将配置信息绑定到本地地址和端口上 listen(socketSrv,10);//将套接字设为监听模式,准备接受客户请求,最大可同时接受10个请求 if(listen(socketSrv,10)==-1){perror("listen出错!");exit(1); } while(1) {sockaddr_inaddrClient;//提出连接请求服务的主机的信息 intlen=sizeof(structsockaddr_in); SOCKETsocketConn=accept(socketSrv,(structsockaddr*)&addrClient,&len);//接受连接请求,返回一个对应于此连接的套接字 charrecvBuf[100]; recv(socketConn,recvBuf,100,0);//接收从客户端发来的信息,并存放在建立好的缓冲区内 printf("%s\n",recvBuf);//将接收的信息打印,这里打印的是客户端询问学号的请求 char*msg="heshanshan09211595";send(socketConn,msg,strlen(msg)+1,0);//将客户端询问的信息发送回去 charrrecvBuf[100];//接收从客户端发来的确认收到的信息 recv(socketConn,rrecvBuf,100,0); printf("%s\n",rrecvBuf); closesocket(socketConn);//处理完毕,关闭套接字 }}编写客户端代码,TCPClient:#include<Winsock2.h>#include<stdio.h>voidmain(){ //用WSAStartup函数加载套接字库,并进行版本协商,和服务端的都一样 WORDwVersionRequested; WSADATAwsaData; interr; wVersionRequested=MAKEWORD(2,2); err=WSAStartup(wVersionRequested,&wsaData); if(err!=0){ /*Telltheuserthatwecouldnotfindausable*/ /*WinSockDLL.*/ return; } /*ConfirmthattheWinSockDLLsupports2.2.*/ /*NotethatiftheDLLsupportsversionsgreater*/ /*than2.2inadditionto2.2,itwillstillreturn*/ /*2.2inwVersionsincethatistheversionwe*/ /*requested.*/ if(LOBYTE(wsaData.wVersion)!=2||HIBYTE(wsaData.wVersion)!=2){ /*Telltheuserthatwecouldnotfindausable*/ /*WinSockDLL.*/ WSACleanup(); return; } SOCKETsocketClient=socket(AF_INET,SOCK_STREAM,0);//创建套接字 sockaddr_inserv_addr;//配置服务端的地址信息 serv_addr.sin_addr.S_un.S_addr=inet_addr("59.64.157.9");//服务端的IP地址信息 serv_addr.sin_family=AF_INET; serv_addr.sin_port=htons(3333);//端口号,必须和服务端的保持一致 connect(socketClient,(structsockaddr*)&serv_addr,sizeof(structsockaddr));//与服务端进行连接 send(socketClient,"whatismystudentid?",strlen("whatismystudentid?")+1,0);//向服务器端发送请求信息printf("receivedaconnectionfrom%s\n",inet_ntoa(serv_addr.sin_addr));//打印服务器端的IP地址信息,这里是59.64.157.9 charrecvBuf[100]; recv(socketClient,recvBuf,100,0); printf("%s\n",recvBuf);//接收从服务端发来的学号信息 send(socketClient,"receivedsuccessful!",strlen("receivedsuccessful!")+1,0);//向服务端发送收到的确认信息 closesocket(socketClient);//关闭套接字 WSACleanup();//终止对套接字库的使用}编译程序:因为使用了WSAStartup函数,从MSDN知道需要加载一个ws2_32.lib的库以及#include<Winsock2.h>的头文件,并且在执行的时候要首先执行服务端的程序,使他保持开启状态再执行客户端的程序。显示结果:首先运行服务端:因为没有请求,所以

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论