资源描述:
《基于tcp-udp通讯的客户-服务器(cs)程序的实验(实现过程)》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、实训TCP与UDP.1动手实践1.实验目的学习基于TCP/IP的网络编程,掌握TCP的连接过程。2.实验环境满足C++程序编译条件的计算机一台。可安装vc6.0或者vs2005。3.实验步骤1)创建服务器端程序(vc6.0)①首先创建一个win32控制台空项目TCPserver①添加程序文件server.cpp②分析下面程序,并把它复制到server.cpp文件中#include#includevoidmain(){WORDwVersionRequested;//定义一个word类型的变量,
2、用于指定准备加载的winsock库的版本WSADATAwsaData;//定义一个WSADATA类型的结构体变量,用以加载套接字库,并指定连接的版本号interr;wVersionRequested=MAKEWORD(1,1);//请求一个1.1版本的套接字库err=WSAStartup(wVersionRequested,&wsaData);//请求加载,如winsock没有正确初始化或者没有被找到,则返回“WSASYSNOTREADY”if(err!=0){return;}//初始化失败,则退出程序if(LOBYTE(wsaDa
3、ta.wVersion)!=1
4、
5、HIBYTE(wsaData.wVersion)!=1){WSACleanup();return;}//winsock初始化成功后判断版本号(高字节+低字节)是否与请求版本号相同,如不相同,则停止调用SOCKETsockSrv=socket(AF_INET,SOCK_STREAM,0);/*创建一个套接字socket(AF_INET,SOCK_STREAM,0);第一个参数用来指定地址族,对于TCP/IP协议的套接字,它只能是AF_INET(PF_INET),第二个参数用来指定socket类型,SO
6、CK_STREAM指的是采用基于TCP/IP协议的套接字,SOCK_DGRAM为UDP协议的,第三个参数是与特定的地址家族相关的协议,如果为0,则自动选择*///调用成功后会返回一个新的socket数据类型的套接字,需要绑定到本地的IP和端口SOCKADDR_INaddrSrv;//定义一个地址结构体变量addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);//获取本地任何一个可用IP地址,如需指定,则可调用inet_addr()函数addrSrv.sin_family=AF_INET;add
7、rSrv.sin_port=htons(6000);//指定端口号,转换成2进制bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));//把套接字sockSrv绑定到本地的IP和端口listen(sockSrv,5);//监听连接请求,5为最大等待连接数SOCKADDR_INaddrClient;intlen=sizeof(SOCKADDR);//下面的循环为不断监听连接请求while(1){SOCKETsockConn=accept(sockSrv,(SOCKADDR*)&addrC
8、lient,&len);//接受客户机的连接请求并获取客户机的套接字等信息boolflag=1;//定义一个开关变量,初始置开while(flag)//循环用于维护当前连接的客户机{//获取请求连接计算机的套接字,IP和端口号charrecvBuf[100];//定义一个字符数组,用来保存客户机传递过来的消息recv(sockConn,recvBuf,100,0);//接受客户机信息if(recvBuf[0]=='q')//如果客户机退出连接,则关闭socket连接{flag=0;//开关置闭closesocket(sockConn
9、);continue;}printf("%s",recvBuf);//输出客户机发来的消息charsendBuf[100];//用来存储发给客户机的消息printf("Pleaseinputdata:");gets(sendBuf);//键盘输入send(sockConn,sendBuf,strlen(sendBuf)+1,0);//把消息发给客户机}}}①添加动态链接库文件ws2_32.lib①编译运行1)创建客户机端程序①在上面的项目中添加新的工程TCPclient①在该工程添加程序文件client.cpp①分析下面程序
10、,并复制到client.cpp文件中#include#includevoidmain(){WORDwVersionRequested;WSADATAwsaData;interr;wVersio