基于TCP-UDP通讯的客户-服务器(CS)程序的实验(实现过程).doc

基于TCP-UDP通讯的客户-服务器(CS)程序的实验(实现过程).doc

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

实训 TCP 与 UDP 动手实践 实验目的 学习基于TCP/IP的网络编程,掌握TCP的连接过程。 实验环境 满足C++程序编译条件的计算机一台。可安装vc 6.0或者vs 2005。 实验步骤 创建服务器端程序(vc 6.0) 首先创建一个win32控制台空项目TCPserver 添加程序文件server.cpp 分析下面程序,并把它复制到server.cpp文件中 #include Winsock2.h #include stdio.h void main() { WORD wVersionRequested; //定义一个word类型的变量,用于指定准备加载的winsock库的版本 WSADATA wsaData; //定义一个WSADATA类型的结构体变量,用以加载套接字库,并指定连接的版本号 int err; wVersionRequested = MAKEWORD(1,1);//请求一个1.1版本的套接字库 err = WSAStartup( wVersionRequested,wsaData ); //请求加载,如winsock没有正确初始化或者没有被找到,则返回“WSASYS NOT READY” if ( err != 0 ){ return; } //初始化失败,则退出程序 if ( LOBYTE( wsaData.wVersion ) != 1 || HIBYTE( wsaData.wVersion ) != 1 ){ WSACleanup(); return; } //winsock初始化成功后判断版本号(高字节+低字节)是否与请求版本号相同,如不相同,则停止调用 SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0); /*创建一个套接字socket(AF_INET,SOCK_STREAM,0);第一个参数用来指定地址族, 对于TCP/IP协议的套接字,它只能是AF_INET(PF_INET),第二个参数用来指定socket类型, SOCK_STREAM指的是采用基于TCP/IP协议的套接字,SOCK_DGRAM为UDP协议的,第三个参数 是与特定的地址家族相关的协议,如果为0,则自动选择*/ //调用成功后会返回一个新的socket数据类型的套接字,需要绑定到本地的IP和端口 SOCKADDR_IN addrSrv;//定义一个地址结构体变量 addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY); //获取本地任何一个可用IP地址,如需指定,则可调用inet_addr()函数 addrSrv.sin_family=AF_INET; addrSrv.sin_port=htons(6000);//指定端口号,转换成2进制 bind(sockSrv,(SOCKADDR*)addrSrv,sizeof(SOCKADDR)); //把套接字sockSrv绑定到本地的IP和端口 listen(sockSrv,5); //监听连接请求,5为最大等待连接数 SOCKADDR_IN addrClient; int len=sizeof(SOCKADDR); //下面的循环为不断监听连接请求 while(1) { SOCKET sockConn=accept(sockSrv,(SOCKADDR*)addrClient,len); //接受客户机的连接请求并获取客户机的套接字等信息 bool flag=1;//定义一个开关变量,初始置开 while(flag)//循环用于维护当前连接的客户机 { //获取请求连接计算机的套接字,IP和端口号 char recvBuf[100];//定义一个字符数组,用来保存客户机传递过来的消息 recv(sockConn,recvBuf,100,0);//接受客户机信息 if(recvBuf[0]==q)//如果客户机退出连接,则关闭socket连接 { flag=0;//开关置闭 closesocket(sockConn); continue; } printf(%s\n,recvBuf);//输出客户机发来的消息 char sendBuf[100];//用来存储发给客户机的消息 printf(Please input data:\n); gets(sendBuf);//键盘输入 send(sockConn,sendBuf,strl

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档