windows下两个网卡作了bond,怎样读取它的ip地址呢?

解决方案 »

  1.   

    bind的时候不是都有一个对应socket么,通过这个socket就可以取到了。
      

  2.   

    我的理解:bind只绑定端口,不绑定ip,不管你几个网卡,客户端只要能通过任意IP访问你的主机也就能与你通信。所以说你的服务器可以在任意一台电脑上使用,要知道不同电脑IP一般都不一样的,但是客户端只要指定正确的IP就能连接成功,可见服务器并不绑定ip,跟本机有几个网卡毫无关系。
      

  3.   

    IP地址不会因为bind而改变。获取IP用GetAdatpersInfo,然后逐一枚举
      

  4.   

    晕,说的好像偏离主题了windows下两个网卡作了bind是什么意思啊, 跟读本机IP有什么关系啊?况且一个网卡也可以多个IP啊,这什么关系吗?
      

  5.   

    绑定INADDR_ANY(0.0.0.0)用那个网卡IP都可以访问,绑定该网卡IP只有和网卡IP属于一个网络的IP才可以访问,绑定127.0.0.1只有本机程序可以访问。
      

  6.   

    char   szhostname[32];   
    if(gethostname(szhostname,sizeof(szhostname))==0)     
    {   
       struct   hostent*   pHost;   
       CString   addr;// IP地址   pHost=gethostbyname(szhostname);   
       for(j=0;pHost!=NULL&&pHost->h_addr_list[j]!=NULL;j++)   
       {   
           addr=inet_ntoa(*(struct   in_addr*)pHost->h_addr_list[j]);   
          //多块网卡这里会循环多次 
        }   
    }
      

  7.   

    你怎么bind的啊,多个ip怎么来的啊
      

  8.   

    Windows和Linux得到本机IP地址的通用函数 
    http://blog.csdn.net/sailingcelery/articles/100703.aspx
      

  9.   

    bind()就是将socket与本地主机地址与端口地址绑定起来,怎么能叫不绑定IP地址呢;
    char  szhostname[32];  
    if(gethostname(szhostname,sizeof(szhostname))==0)    
    {  
      struct  hostent*  pHost;  
      CString  addr;// 
      IP地址  pHost=gethostbyname(szhostname); //
     //gethostbyname(szhostname);返回指针是指向一个数组,里面存的就是你的多网卡的ip地址,不过这个存放的是网络字节序的
      for(j=0;pHost!=NULL&&pHost->h_addr_list[j]!=NULL;j++)  
      {  
          addr=inet_ntoa(*(struct  in_addr*)pHost->h_addr_list[j]);  
        }  
    }