设为首页 加入收藏

TOP

1.2.3 小试牛刀--编程实现获取计算机的IP地址和计算机名(2)
2013-10-07 15:53:11 来源: 作者: 【 】 浏览:69
Tags:1.2.3 小试牛刀 编程 实现 获取 计算机 地址

1.2.3  小试牛刀--编程(www.cppentry.com)实现获取计算机的IP地址和计算机名(2)

(2) 在文件IPAddressDlg.cpp中编写函数GetLocalHostName()获取机器名,调用函数GetIPAddress()获取机器的IP地址。具体代码如下:

  1. int CIPAddressDlg::GetLocalHostName(CString &sHostName)  
  2. {  
  3. char szHostName[256];  
  4. int  nRetCode;  
  5. nRetCode = gethostname(szHostName, sizeof(szHostName));  
  6. if (nRetCode != 0) {  
  7. sHostName = _T("Not available");;  
  8. return WSAGetLastError();  
  9. }  
  10. sHostName = szHostName;  
  11. return 0;  
  12. }  
  13.  
  14. int CIPAddressDlg::GetIPAddress(const CString &sHostName,  
  15. CString &sIPAddress)  
  16. {  
  17. struct hostent FAR *lpHostEnt = gethostbyname(sHostName);  
  18. if (lpHostEnt == NULL) {  
  19. sIPAddress = _T("");  
  20. return WSAGetLastError();  
  21. }  
  22. LPSTR lpAddr = lpHostEnt->h_addr_list[0];  
  23. if (lpAddr) {  
  24. struct in_addr  inAddr;  
  25. memmove(&inAddr, lpAddr, 4);  
  26. sIPAddress = inet_ntoa(inAddr);  
  27. if (sIPAddress.IsEmpty())  
  28. sIPAddress = _T("Not available");  
  29. }  
  30.  
  31. return 0;  

(3) 在文件IPAddressDlg.cpp中载入Winsock库并释放控件,具体代码如下:
  1. int CIPAddressDlg::StartUp()  
  2. {  
  3. WORD  wVersionRequested;  
  4. WSADATA wsaData;  
  5. int err;  
  6. wVersionRequested = MAKEWORD(2, 0);  
  7. err = WSAStartup(wVersionRequested, &wsaData);  
  8. if (err != 0) {  
  9. return err;  
  10. }  
  11. if (LOBYTE(wsaData.wVersion) != 2  
  12. || HIBYTE(wsaData.wVersion) != 0) {  
  13. WSACleanup();  
  14. return WSAVERNOTSUPPORTED;  
  15. }  
  16. return 0;  

至此整个实例的主要模块介绍完毕,执行后将获取机器名和IP地址,如图1-14所示。
 
图1-14  执行效果
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇1.2.3 小试牛刀--编程实现获取计.. 下一篇1.3.1 数据报套接字编程

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·C++中智能指针的性能 (2025-12-25 03:49:29)
·如何用智能指针实现c (2025-12-25 03:49:27)
·如何在 C 语言中管理 (2025-12-25 03:20:14)
·C语言和内存管理有什 (2025-12-25 03:20:11)
·为什么C语言从不被淘 (2025-12-25 03:20:08)