资源描述:
《学习MFC下的TCP编程》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、目录1、得到本机IP和主机名2<1>得到本地主机名3<2>主机名和IP地址32、设置某个按钮不可用:43、控制台下socket通信4<1>、服务器端4<2>、客户端端64、MFC下TCP编程(只能服务器发,客户端收)7<1>、服务器端9<2>、客户端105、MFC下TCP编程(可以互发)12<1>服务器端121、在*Dlg*.h中添加:132、在protected:下添加133、在Dlg.cpp中添加内容134、添加自定义消息响应函数135、添加变量146、启动服务器按钮对应的响应函数内容为:157、关闭服务器按钮对应的消息响应函数内容为:168、发送按钮对应的消息
2、响应函数内容为:16<2>、客户端171、在*Dlg*.h中添加:182、在protected:下添加183、在Dlg.cpp中添加内容184、添加自定义消息响应函数19文档:wlnEmail---jlu.wln@163.comverygladyoureadmydocument,hopeitcanhelpyou,myfriend!1、得到本机IP和主机名首先添加ws2_32.lib库文件;再添加头文件#include程序:UpdateData(true);charhostname[128]="";WSADATAwsaData;CStringi
3、p;WSAStartup(MAKEWORD(2,2),&wsaData);gethostname(hostname,sizeof(hostname));//printf("%s",hostname);SetDlgItemText(IDC_STATIC1,hostname);//name里是本机名hostent*host=gethostbyname(hostname);sockaddr_inaddre;for(inti=0;host->h_addr_list[i];i++){CStringip;memcpy(&addre.sin_addr.s_addr,host->h
4、_addr_list[0],host->h_length);ip=inet_ntoa(addre.sin_addr);SetDlgItemText(IDC_STATIC2,ip);}WSACleanup();UpdateData(false);<1>得到本地主机名#include#include#pragmacomment(lib,"Ws2_32.lib")intmain(){ charhostname[128]=""; WSADATAwsaData; WSAStartup(MAKEWORD(2,2),&wsaD
5、ata); gethostname(hostname,sizeof(hostname)); printf("%s",hostname); WSACleanup(); return0;}<2>主机名和IP地址//连接ws2_32.libWORDwVersionRequested;WSADATAwsaData;charname[255];CStringip;interr;PHOSTENThostinfo;wVersionRequested=MAKEWORD(2,2);//版本号2.2//1.加载套接字库err=WSAStartup(wVersionReq
6、uested,&wsaData);if(err!=0){return;}//判断是否我们请求的winsocket版本,如果不是//则调用WSACleanup终止winsocket的使用并返回if(LOBYTE(wsaData.wVersion)!=2
7、
8、HIBYTE(wsaData.wVersion)!=2){WSACleanup();return;}///...ifif(err==0){if(gethostname(name,sizeof(name))==0){if((hostinfo=gethostbyname(name))!=NULL){ip=inet_nto
9、a(*(structin_addr*)*hostinfo->h_addr_list);}}}WSACleanup();SetDlgItemText(IDC_STATIC1,name);//name里是本机名SetDlgItemText(IDC_STATIC2,ip);//ip中是本机IPUpdateData(false);2、设置某个按钮不可用:m_StartBtn.EnableWindow(TRUE);//可用m_StopBtn.EnableWindow(FALSE);//不可用3、控制台下socket通信首先添加ws2_32.lib库文件;再添加头文件#in