CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  网络编程

怎么得到机器的 IP,subnet mask?

楼主newman0708(nch)2005-06-03 08:44:48 在 VC/MFC / 网络编程 提问

能不能提供相关的源代码!  
   
  谢谢! 问题点数:10、回复次数:6Top

1 楼aiyue2010(亚伦)回复于 2005-06-03 09:24:47 得分 5

WORD   wVersionRequested   =   MAKEWORD(2,   2);  
  WSADATA   wsaData;  
  if   (WSAStartup(wVersionRequested,   &wsaData))   {  
  printf("WSAStartup   failed   %s\n",   WSAGetLastError());  
  return   -1;  
  }  
   
  SOCKADDR_IN   sockStruct;                     //SOCKET   结构  
          sockStruct.sin_family=AF_INET;   //使用TCP/IP协议  
          sockStruct.sin_port   =   htons(8001);  
  sockStruct.sin_addr.S_un.S_addr   =   inet_addr("172.31.21.59");  
   
  char   strIP[100];  
  WSAAddressToString((LPSOCKADDR)&sockStruct,   WSAEnumProtocols(),sizeof(sockStruct),   strIP,   100);  
  //////////////////  
  //   Get   host   name.  
  //  
  char   hostname[256];  
  int   res   =   gethostname(hostname,   sizeof(hostname));  
  if   (res   !=   0)   {  
  printf("Error:   %u\n",   WSAGetLastError());  
  return   -1;  
  }  
  printf("hostname=%s\n",   hostname);  
   
  ////////////////  
  //   Get   host   info   for   hostname.    
  //  
  hostent*   pHostent   =   gethostbyname(hostname);  
  if   (pHostent==NULL)   {  
  printf("Error:   %u\n",   WSAGetLastError());  
  return   -1;  
  }  
   
  //////////////////  
  //   Parse   the   hostent   information   returned  
  //  
  hostent&   he   =   *pHostent;  
  printf("name=%s\naliases=%s\naddrtype=%d\nlength=%d\n",  
  he.h_name,   he.h_aliases,   he.h_addrtype,   he.h_length);  
   
  sockaddr_in   sa;  
  for   (int   nAdapter=0;   he.h_addr_list[nAdapter];   nAdapter++)   {  
  memcpy   (   &sa.sin_addr.s_addr,   he.h_addr_list[nAdapter],he.h_length);  
              //   Output   the   machines   IP   Address.  
              printf("Address:   %s\n",   inet_ntoa(sa.sin_addr));   //   display   as   string  
  }  
   
  //////////////////  
  //   Terminate   windows   sockets   API  
  //  
  WSACleanup();  
  Top

2 楼newman0708(nch)回复于 2005-06-04 08:49:36 得分 0

编译不过去  
   
  错误指在这里:  
  WSAAddressToString((LPSOCKADDR)&sockStruct,   WSAEnumProtocols(),sizeof(sockStruct),   strIP,   100);  
   
   
  h:\my_bag\VC++.net\C++_file\Basic_study\BasicMain.cpp(48):   error   C2660:   “WSAEnumProtocolsA”   :   函数不接受   0   个参数  
  Top

3 楼o1n(小毛子)回复于 2005-06-04 22:29:25 得分 3

char   szhostname[128];  
         
  //»ñµÃÖ÷»úÃû  
  if(   gethostname(szhostname,   128)   ==   0   )  
  {  
  //   »ñµÃÖ÷»úipµØÖ·  
  struct   hostent   *   phost;  
  int   i;  
  phost   =   gethostbyname(szhostname);  
                  m_hostname=szhostname;  
  i=0;  
  int   j;  
  int   h_length=4;  
   
   
   
  for(   j   =   0;   j<h_length;   j++   )  
  {  
  CString   addr;  
   
  if(   j   >   0   )  
  str   +=   ".";  
   
  addr.Format("%u",   (unsigned   int)((unsigned  
  char*)phost->h_addr_list[i])[j]);  
  str   +=   addr;  
  }  
       
  }  
          m_ipaddress=str;  
  UpdateData(FALSE);Top

4 楼newman0708(nch)回复于 2005-06-07 21:06:03 得分 0

 
  编译不过去  
   
  错误指在这里:  
  WSAAddressToString((LPSOCKADDR)&sockStruct,   WSAEnumProtocols(),sizeof(sockStruct),   strIP,   100);  
   
   
  h:\my_bag\VC++.net\C++_file\Basic_study\BasicMain.cpp(48):   error   C2660:   “WSAEnumProtocolsA”   :   函数不接受   0   个参数  
   
   
   
  我想要C++和API的,不想用VC的。  
   
   
  Top

5 楼newman0708(nch)回复于 2005-06-13 19:52:19 得分 0

自己顶!Top

6 楼qrlvls( 空 气 )回复于 2005-06-14 07:42:32 得分 2

使用   IP   Helper   API  
  Top

相关问题

  • ip subnet計算
  • 只知道ip地址,能算出subnet mask吗?
  • 关于Subnet Mask
  • 局域网机器IP问题
  • 得到当前机器的IP地址
  • 如何从ip address得到机器名?
  • 为一台机器设置两个IP
  • 为一台机器设置两个IP
  • 如何获得机器ip地址?
  • 如何获得机器IP? 谢谢!

关键词

  • .net
  • c++
  • vc++
  • sockstruct
  • hostname
  • wsagetlasterror
  • strip
  • wsadata
  • addr
  • sin

得分解答快速导航

  • 帖主:newman0708
  • aiyue2010
  • o1n
  • qrlvls

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo