如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
TCP/IP编程基础示例服务端应答程序:/*******************************************************说明:本程序根据《TCP/IPSocketsinC》第二章改写目的:建立一个最简版本的应答服务器时间:2011-02-24文件名:Server.c*******************************************************/#include<stdio.h>#include<winsock.h>#include<stdlib.h>#defineMAXPENDING5/*最大的等待连接请求数*/#defineRCVBUFSIZE32/*最大的接收字节数*/voidHandleTCPClient(intclntSocket);/*处理客户端连接的函数*/intmain(intargc,char*argv[]){intservSock;/*服务端的Socket*/intclntSock;/*客户端的Socket*/structsockaddr_inechoServAddr;/*本地地址*/structsockaddr_inechoClntAddr;/*客户端地址*/unsignedshortechoServPort;/*服务端口*/unsignedintclntLen;/*客户端地址数据结构的长度*/WSADATAwsaData;/*WinSock建立连接的结构体*//*初始化WinSock2.0*/WSAStartup(MAKEWORD(2,0),&wsaData);/*加载Winsock2.0DLL*//*输入服务端口号*/printf("请输入服务器端口号(1025~65535):\n");scanf("%d",&echoServPort);/*建立接收连接的Socket*/servSock=socket(PF_INET,SOCK_STREAM,IPPROTO_TCP);/*构造本地地址的结构体*/memset(&echoServAddr,0,sizeof(echoServAddr));/*结构体数据全部清零*/echoServAddr.sin_family=AF_INET;/*Internet地址协议*/echoServAddr.sin_addr.s_addr=htonl(INADDR_ANY);/*任意地址*/echoServAddr.sin_port=htons(echoServPort);/*本地端口*//*绑定本地地址*/bind(servSock,(structsockaddr*)&echoServAddr,sizeof(echoServAddr));/*监听连接请求*/listen(servSock,MAXPENDING);for(;;)/*与客户端通信,收发信息*/{/*设置in-out参数的大小*/clntLen=sizeof(echoClntAddr);/*等待客户端连接*/clntSock=accept(servSock,(structsockaddr*)&echoClntAddr,&clntLen);printf("与客户端%s连接,等待接收信息\n",inet_ntoa(echoClntAddr.sin_addr));/*clntSock如果已经连接到一个客户端!*/HandleTCPClient(clntSock);//处理客户端的消息}}/******************************************voidHandleTCPClient(intclntSocket)作用:与客户端通信,收发信息。参数:clntSocket:客户端的Socket。返回值:无。******************************************/voidHandleTCPClient(intclntSocket){charechoBuffer[RCVBUFSIZE];/*发送字符串*/charrecvBuffer[RCVBUFSIZE];/*接收字符串*/intrecvMsgSize;/*接收字符串的长度*/memset(echoBuffer,0,sizeof(echoBuffer));/*信息内容清空*/memset(recvBuffer,0,sizeof(recvBuffer));/*信息内容清空*/for(;;)/*从客户端接收消息*/{/*因为接收一次不一定能全部接收,所以要判断是否全部接收*/recvMsgSize=recv(cln