WEB开发网
开发学院软件开发VC 用VC实现QQ2004显示IP地址的方法 阅读

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

 2008-11-14 19:34:38 来源:WEB开发网   
核心提示:相信QQ2004大家玩过吧!其中对好友的IP和哪个地方的显示是不是很爽的啊,哪就跟我来让我看来看究竟,用VC实现QQ2004显示IP地址的方法,以下为实现原理,首先载入Winsock动态库,代码如下:int CIPAddressDlg::StartUp(){WORD wVersionRequested;WSADATA

相信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下运行通过。

Tags:VC 实现 QQ

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接