域名转换为IP地址示例

一、前提条件

    项目中增加对winsock的支持:在应用程序向导中勾选“Windows套接字”选项,也可以手工添加相关的*.h文件和代码实现。

 域名转换为IP地址示例_第1张图片

 

二、编辑对话框资源,添加Button控件、Edit控件和Static Text空间,如下图:

 域名转换为IP地址示例_第2张图片

为控件添加变量: 

CString m_addr;//对应于Static Text,用于显示IP地址
CString m_host;//对应于Edit控件,用于编辑域名对应于Static Text,用于显示IP地址

 

三、添加Button事件代码:

void CMFCWinsockDlg::OnBnClickedButton1()
{
 LPHOSTENT lpHost;
 struct    sockaddr_in saDest;

 UpdateData(TRUE);//通知把Edit控件的字符串内容传送到m_host变量
 
 lpHost = gethostbyname(m_host);//获得IP地址
 if (lpHost == NULL)
 {

  //do somthing
  return;
 }
 
 saDest.sin_addr.s_addr = *((u_long FAR *) (lpHost->h_addr));
 m_addr = inet_ntoa(saDest.sin_addr);
 UpdateData(FALSE);//通知把m_addr字符串内容传送到Static Text控件显示
}

 域名转换为IP地址示例_第3张图片

注意事项:在项目属性中设置使用多字节字符集,使用Unicode字符集时编译出错:

error C2664: “gethostbyname”: 不能将参数 1 从“CString”转换为“const char *” 。

另外,在设置成使用多字节字符集后,程序界面变成了传统界面风格,要变回XP风格,可以编辑一个.manifest文件加进项目中编译,我另文说明。 

 

你可能感兴趣的:(VC++)