如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
//如果不能运行,改一下Ip地址,改成你本机地址,要先启动服务器端才行//服务器端#include<winsock2.h>#include<stdio.h>#defineLOCAL_ADDRESS"127.0.0.1"#definePORT5510#defineMSGSIZE1024#pragmacomment(lib,"ws2_32.lib")intmain(){WSADATAwsaData;//WSADATA是一个结构体,主要包含winsock的信息,返回唯一有用的信息就是winsock版本号intiResult=WSAStartup(MAKEWORD(2,2),&wsaData);//加载Winsock库,并初始化//MAKEWORD(2,2)表示Windows支持的winsock版本//&wsaData代表指向wsaData的地址,wsaData包含了winsock的信息printf("InitializingWinsocklibrary.\n");if(iResult!=NO_ERROR)printf("ErroratWSAStartup().\n");elseprintf("Initializedsucessfully.\n");//初始化成功SOCKETsLocal,sRemote;//实例化套接字sLocal,sRemoteSOCKADDR_INlocal,remote;sLocal=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);//初始化套接字memset(&local,0,sizeof(SOCKADDR_IN));//用memset函数清空local为全0local.sin_family=AF_INET;//指定地址家族,此时必须设为AF_INETlocal.sin_addr.S_un.S_addr=inet_addr(LOCAL_ADDRESS);//指定IP地址local.sin_port=htons(PORT);//指定通信端口号bind(sLocal,(structsockaddr*)&local,sizeof(SOCKADDR_IN));//将套接字sLocal绑定到local所指定的IP地址listen(sLocal,3);//sLocal进入监听状态,3代表最大等待客户端数intiNamelen=sizeof(SOCKADDR_IN);//定义一个iNamelen,存放SOCKADDR_IN长度sRemote=accept(sLocal,(structsockaddr*)&remote,&iNamelen);//accept()函数用来准备接收客户的连接,sLocal必须处于监听状态//accept()函数返回的是一个新的套接字,它对应于已经建立连接的客户机charreceiveMessage[MSGSIZE],sendMessage[MSGSIZE];//定义2个数组用来接收和发送数据intret;while(TRUE){ret=recv(sRemote,receiveMessage,MSGSIZE,0);//recv()函数用来接收客户端发来的数据,数据存放在receiveMessage[MSGSIZE]中//recv()返回值是接收到的数据长度,此时赋给retif(ret!=0){//判断ret的值,如果为零则进入发送模式,不为零就打印所接收到的数据receiveMessage[ret]='\0';//在接受到的数据末尾家一个停止字符printf("Received:%s\n",receiveMessage);}printf("服务器Send:");//进入发送模式gets(sendMessage);send(sRemote,sendMessage,strlen(sendMessage),0);//发送数据给客户机,发送的数据存放在sendMessage中}closesocket(sLocal);//关闭套接字,释放资源closesocket(sRemote);WSACleanup();//卸载winsock库return0;}//发送端#include<winsock2.h>#include<stdio.h>#defineREMOTE_ADDRESS"127.0.0.1"#definePORT5510#defineMSGSIZE1024#pragmacomment(lib,"w