在TCP/IP协议中,建立连接的两个进程(客户端和服务器)各自用一个socket(IP地址+TCP/UDP端口号)标识。在MFC中流式套接字(SOCK_STREAM)和数据报套接字(SOCK_DGRAM)分别对应TCP/UDP协议通信使用。
基础IP对话框如下,将输入的IP信息进行整合到文本框中。
地址框可以设置属性为只读,或者是将控件设置EnableWindow。
其中使用控件变量如下:
具体代码为:BYTE为unsigned char型,取值0-255;
1 // TODO: 在此添加控件通知处理程序代码 2 BYTE nfield[4]; 3 CString strIP; 4 UpdateData(); //默认为true,将输入值传入控件,否则将控件变量值输出到文本框中 5 6 if(ServerIP.IsBlank()||m_str_port =="")//判断输入变量是否合法 7 { 8 AfxMessageBox("IP地址与端口不能为空"); 9 return ; //如不执行return 则会继续执行赋IP操作 10 } 11 //将IP传给地址框 12 ServerIP.GetAddress(nfield[0],nfield[1],nfield[2],nfield[3]); 13 strIP.Format("%d.%d.%d.%d",nfield[0],nfield[1],nfield[2],nfield[3]); 14 m_edit_address.SetWindowText(strIP+" :"+m_str_port); 15 }
MFC中涉及字符串处理的API函数都有A和W两个版本:
1)A结尾的表示使用ANSI编码:中文的Windows操作系统一般对应的就是GBK(英文占用一个字节 、汉字两个字节。 )
2)W结尾的表示使用UNICODE编码:UTF-16版本---英文两个字节、汉字两个字节 ;UTF-32版本---英文/汉字四个字节
如果你的软件将来只需要英文或汉文字符,那就选择A版本的API,如果有可能要使用多国文字,那么最好使用W版本的API。都不影响则无需理会,以上取值直接为SetWindowText。
MFC中控件大多有Get/Set开头的函数,一般Get是将控件的值写入到函参中,Set是将函参赋值给控件变量。