因为Client是通信的主动方,即发起通信的一端,因此通信之前Client必须已知Server的IP和端口号才行。
通常的C/S模式通信的做法是先为Server申请公网IP,然后在client编程时指明欲连接的Server的IP和端口号,这样的client程序一旦安装后就内置了Server的IP;
另一种做法是在client的执行界面预留输入框,执行时允许用户输入Server的IP,然后实现通信,这两种方式都必须事先知道server的IP信息才行。
void CMyDlg::OnIPAddress()
{
// 此段代码:独立的获取本机IP地址和计算机名
WORD wVersionRequested;
WSADATA wsaData;
char name[255];
CString ip;
PHOSTENT hostinfo;
wVersionRequested = MAKEWORD(2, 0);
if (WSAStartup(wVersionRequested, &wsaData) == 0)
{
if(gethostname(name, sizeof(name)) == 0)
{
if((hostinfo = gethostbyname(name)) != NULL)
{
ip = inet_ntoa((struct in_addr )hostinfo->h_addr_list);
}
}
WSACleanup( );
}
// AfxMessageBox(name);//name里是本机名
// AfxMessageBox(ip); //ip中是本机IP
m_IPAddress = ip; // m_IPAddress是IP控件对应的变量,ip是Edit控件对应的变量
// m_IPSetAddress(255, 86, 255, 68); // 直接设置控件里显示的值
// 本段代码:已知IP Address控件里显示的值,转换为CString格式
/
// 下面代码实现:把IP Address控件里的值转化为 CString格式
unsigned char pIP;
CString strIP;
DWORD dwIP;
m_IPGetAddress(dwIP); // m_IP为IP Address控件对应的变量
pIP = (unsigned char)&dwIP;
strIPFormat("%u%u%u%u",(pIP+3), (pIP+2), (pIP+1), pIP);
MessageBox(strIP);/
/
// 下面代码实现:把IP Address控件里的值转化为 CString格式
BYTE f0, f1, f2, f3;
m_IPGetAddress(f0, f1, f2, f3);
CString m_addr;
m_addrFormat("%d%s%d%s%d%s%d", f0, "", f1, "", f2, "", f3);
MessageBox(m_addr);/
/
// 下面代码实现:把IP Address控件里的值转化为 CString格式
BYTE IPByte[4];
m_IPGetAddress(IPByte[0], IPByte[1], IPByte[2], IPByte[3]);
CString strIP = "";
char temp1[10], temp2[10], temp3[10], temp4[10];
itoa(IPByte[0], temp1, 10);
itoa(IPByte[1], temp2, 10);
itoa(IPByte[2], temp3, 10);
itoa(IPByte[3], temp4, 10);
strIP += temp1;
strIP += "";
strIP += temp2;
strIP += "";
strIP += temp3;
strIP += "";
strIP += temp4;
MessageBox(strIP);/
/
// 下面代码实现:把IP Address控件里的值转化为 CString格式
CString strx;
m_IPGetWindowText(strx);
MessageBox(strx);/
// 此段代码:用获取的IP地址值,显示到对话框里IP Address控件中
/ CString strIP;
GetDlgItemText(IDC_EDIT_IPAddress, strIP);
m_IPSetWindowText(strIP);/
m_IPSetWindowText(ip); // 把IP地址(CString类型)直接显示到IP Address控件中
UpdateData(FALSE);
}
以上就是关于MFC获取应用程序自身在公网IP及端口号全部的内容,包括:MFC获取应用程序自身在公网IP及端口号、MFC IP地址控件的用法、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)