资源描述:
《MFC-网络编程----总结.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、MFC网络编程--总结 基于TCP的socket编程 /* 服务器端程序流程: 1.加载套接字库WSAStartup 2.创建套接字socket 3.将我们创建的套接字,绑定到本机地址的某一端口上bind 4.为套接字设置监听模式,准备客户请求listen 5.等待客户请求到来。当请求到来,将接受连接请求,并返回一个新的对应于此次连接的套接字accept 6.用新返回的套接字和客户端进行通信send/recv 7.在通信结束后,关闭套接字closesocket 客户端程序流程: 1.
2、加载套接字库WSAStartup 2.创建套接字socket 3.向服务器发出请求连接connect 4.和服务器进行通信send/recv 5.在通信结束后,关闭套接字closesocket */ 服务器端代码: #include #include #pragmacomment(lib,"Ws2_32.lib") voidmain() { //加载套接字库,并进行套接字的版本协商 WORDwVersionRequested;//指定将要加
3、载的winsock库版本 WSADATAwsaData;//用于存储加载的winsock库版本信息 intresult;//用于检测WSAStartup函数运行结果 wVersionRequested=MAKEWORD(1,1);//设定版本 result=WSAStartup(wVersionRequested,&wsaData); //函数WSAStartup调用成功返回0 //出错处理 if(result!=0) { return; } if(LOBYTE(wsaData.wVe
4、rsion)!=1
5、
6、HIBYTE(wsaData.wVersion)!=1) { WSACleanup(); return; } //创建套接字 SOCKETsock=socket(AF_INET,SOCK_STREAM,0); //绑定套接字 SOCKADDR_INaddrInfo;//存储本地主机地址信息 addrInfo.sin_addr.S_un.S_addr=htonl(INADDR_ANY);//本地主机地址 addrInfo.sin_port=htons(6000);//
7、端口号 addrInfo.sin_family=AF_INET;//地址族 bind(sock,(SOCKADDR*)&addrInfo,sizeof(SOCKADDR)); //设置套接字监听模式 listen(sock,5); SOCKADDR_INaddrInfoClient;//存储客户端地址信息 intlen=sizeof(SOCKADDR); while(true) { //等待客户请求到来,并返回用于通信的套接字 SOCKETsockConnect=accept(sock,
8、(SOCKADDR*)&addrInfoClient,&len); //下面通过刚建立的套接字,来进行通信 //发送数据 charsendBuf[100]; sprintf(sendBuf,"这是服务器端,主机地址:%s",inet_ntoa(addrInfo.sin_addr)); send(sockConnect,sendBuf,strlen(sendBuf),0); //接收数据 charrecvBuf[100]; recv(sockConnect,recvBuf,strlen(rec
9、vBuf),0); //打印接收的数据 printf("%s",recvBuf); closesocket(sockConnect); } } 客户端代码: #include #include #pragmacomment(lib,"Ws2_32.lib") voidmain() { //加载套接字库,并进行套接字的版本协商 WORDwVersionRequested;//指定将要加载的winsock库版本 WSADATAwsaDat
10、a;//用于存储加载的winsock库版本信息 intresult;//用于检测WSAStartup函数运行结果 wVersionRequested=MAKEWORD(1,1);//设定版本 result=WSAStartup(wVersionRequested,&wsaData); //函数WSAStartup调用成功返回0 //出错处理 if(result!=0) { return; }