资源描述:
《MFC socket网络编程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、MFCsocket网络编程(流程示例)1.TCP流式套接字的编程步骤在使用之前须链接库函数:工程->设置->Link->输入ws2_32.lib,OK!服务器端程序:1、加载套接字库2、创建套接字(socket)。3、将套接字绑定到一个本地地址和端口上(bind)。4、将套接字设为监听模式,准备接收客户请求(listen)。5、等待客户请求到来;当请求到来后,接受连接请求,返回一个新的对应于此次连接的套接字(accept)。6、用返回的套接字和客户端进行通信(send/recv)。7、返回,等待另一客户请求。8、关闭套接字。客户端程序:1、加载套接字库2、创建套接字(socket)
2、。3、向服务器发出连接请求(connect)。4、和服务器端进行通信(send/recv)。5、关闭套接字。服务器端代码如下:#include//加裁头文件#include//加载标准输入输出头文件voidmain(){WORDwVersionRequested;//版本号WSADATAwsaData;interr;wVersionRequested=MAKEWORD(1,1);//1.1版本的套接字err=WSAStartup(wVersionRequested,&wsaData);if(err!=0){return;}//加载套接字库,
3、加裁失败则返回if(LOBYTE(wsaData.wVersion)!=1
4、
5、HIBYTE(wsaData.wVersion)!=1){WSACleanup();return;}//如果不是1.1的则退出SOCKETsockSrv=socket(AF_INET,SOCK_STREAM,0);//创建套接字(socket)。SOCKADDR_INaddrSrv;addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);//转换Unsignedshort为网络字节序的格式addrSrv.sin_family=AF_INET;addrSrv.sin_p
6、ort=htons(6000);bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));//将套接字绑定到一个本地地址和端口上(bind)listen(sockSrv,5);//将套接字设为监听模式,准备接收客户请求(listen)。SOCKADDR_INaddrClient;//定义地址族intlen=sizeof(SOCKADDR);//初始化这个参数,这个参数必须被初始化while(1){SOCKETsockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len);//accept的第三个参
7、数一定要有初始值。//等待客户请求到来;当请求到来后,接受连接请求,返回一个新的对应于此次连接的套接字(accept)。//此时程序在此发生阻塞charsendBuf[100];sprintf(sendBuf,"Welcome%stowww.msn.com.cn",inet_ntoa(addrClient.sin_addr));//用返回的套接字和客户端进行通信(send/recv)。send(sockConn,sendBuf,strlen(sendBuf)+1,0);charrecvBuf[100];recv(sockConn,recvBuf,100,0);printf("%s
8、n",recvBuf);closesocket(sockConn);//关闭套接字。等待另一个用户请求}}客户端代码如下:#include#includevoidmain(){WORDwVersionRequested;WSADATAwsaData;interr;wVersionRequested=MAKEWORD(1,1);err=WSAStartup(wVersionRequested,&wsaData);//加载套接字库if(err!=0){return;}if(LOBYTE(wsaData.wVersion)!=1
9、
10、HIBYTE(
11、wsaData.wVersion)!=1){WSACleanup();return;}SOCKETsockClient=socket(AF_INET,SOCK_STREAM,0);//创建套接字(socket)。SOCKADDR_INaddrSrv;addrSrv.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");addrSrv.sin_family=AF_INET;addrSrv.sin_port=htons(6000);con