龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > VC开发 >

用VC实现QQ2004显示IP地址的方法

时间:2009-12-30 15:42来源:未知 作者:admin 点击:
分享到:
相信QQ2004大家玩过吧!其中对好友的IP和哪个地方的显示是不是很爽的啊。哪就跟我来让我看来看究竟。以下为实现原理。 首先载入Winsock动态库,代码如下: int CIPAddressDlg::StartUp() { WO

相信QQ2004大家玩过吧!其中对好友的IP和哪个地方的显示是不是很爽的啊。哪就跟我来让我看来看究竟。以下为实现原理。
  首先载入Winsock动态库,代码如下:

int CIPAddressDlg::StartUp()
{
 WORD wVersionRequested;
 WSADATA wsaData;
 int err;

 wVersionReuqested=MAKEWORD(2,0);
 err=WSAStartup(wVersionReuqested, &wsaData);
 if(err!=0)
 {
  return err;
 }
 if(LOBYTE(wsaData.wVersion)!=2||HIBYTE(wsaData.wVersion)!=0)
 {
  WSACleanup();
  return WSAVERNOTSUPPORTED;
 }
 return 0;
}


  以下的GetLocalHostName()函数为现实获取计算机名称,

int CIPAddressDlg::GetLocalHostName(CString&sHostName)
{
 char szHostName[256];
 int nRectCode;
 nRectCode=gethostname(szHostName,sizeofa(szHostName));
 if(nRectCode!=0)
 {
  sHostName=_T("Not available");
  return WSAGetLastError();
 }
 sHostName=szHostName;
 return 0;
}

  然后调用GetIPAddress来获取IP地址

int CIPAddressDlg::GetIPAddress(const CString& sHostName, CString&sIPAddress)
{
 struct hostent FAR *lpHostEnt=gethostbyname(sHostName);
 if(lpHostEnt==NELL)
 {
  sIPAddress=_T("");
  return WSAGetLastError();
 }
 LPSTR lpAddr=lpHostEnt->h_adr_list[0];
 if(lpAddr)
 {
  struct in_addr inAddr;
  memmove (&inAddr,lpAddr, 4);
  sIPAddress=inet_ntoa (inAddr);
  if(sIPAddress.IsEmpty())
   sIPAddress=_T("Not available");
 }
 return 0;
}

  哈哈,一切就绪了,是不是很简单啊!

  本程序是VC++6.0下运行通过。

精彩图集

赞助商链接