双网卡 如何实现绑定(IP可变)

来源:互联网 发布:同声传译软件 知乎 编辑:程序博客网 时间:2024/06/05 14:43

双网卡 如何实现绑定(IP可变)

电脑上2个网卡,我知道可以通过ip的不同实现绑定,但是,我的IP是可以改变的,也就是说在程序运行的情况下,改变IP,程序不受影响.所以是通过localaddr.sin_addr.s_addr = INADDR_ANY; 来实现的,因为是INADDR_ANY,所以IP改变了之后,也不需要重新绑定(之前是1个网卡就这么干的)。但是现在有2个网卡了,有什么设置可以绑定的时候通过网卡的信息来实现绑定(还是使用INADDR_ANY),谢谢啦。

usahost

解决方案 »

  1. IP_ADAPTER_INFO结构体 可以获取每款网卡的信息
    GetAdaptersInfo函数AddIPAddress 此函数绑定添加IPUINT iaIPAddress;
    UINT imIPMask;
    DWORD dwRetVal;
    DWORD m_x,m_y;    ((CIPAddressCtrl*)GetDlgItem(IDC_IPADDRESS1))->GetAddress(m_y);
        ((CIPAddressCtrl*)GetDlgItem(IDC_IPADDRESS2))->GetAddress(m_x); ULONG NTEContext = 0;
    ULONG NTEInstance = 0;
    imIPMask = m_x;
    iaIPAddress = m_y;   if ( (dwRetVal = AddIPAddress(htonl(iaIPAddress), IP地址
      htonl(imIPMask), 子网掩码
      net_dwIndex,网卡设备编号,为IP_ADAPTER_INFO结构体的Index变量
      &NTEContext, 
      &NTEInstance) ) == NO_ERROR) {
      }
     
      
  2. 最后说句 为了使其生效 别忘了重启IP,重启网卡
    具体API 可以查看iphlpapi.h 头文件 这里有你想要的!
      
  3. 你好!
    我可以通过网卡读到IP,也可以根据网卡的信息绑定IP,但是这样绑定的话,如何修改IP的话,那么这个socket就会无效,除非绑定NADDR_ANY,但是绑定NADDR_ANY的前提是保证是确定网卡的NADDR_ANY。
      
  4. 你好!
    我可以通过网卡读到IP,也可以根据网卡的信息绑定IP,但是这样绑定的话,如何修改IP的话,那么这个socket就会无效,除非绑定NADDR_ANY,但是绑定NADDR_ANY的前提是保证是确定网卡的NADDR_ANY。
    不懂! 可否理解为你重新绑定一个ip后,你先前ip链接上的套接字会断掉,
    你现在的想法是既要换掉IP,又要保证链接不能断掉》?
      
  5. 你现在的想法是既要换掉IP,又要保证链接不能断掉》?
    对,现在的想法就是这样,之前一个网卡的时候,通过NADDR_ANY绑定的时候,如果IP换掉,链接确实不会断掉
      
  6. 查看IP_ADAPTER_INFO 结构 以及相应的API 看是否能够通过网卡的信息
    查找到该网卡的localaddr.sin_addr.s_addr 信息
      

  7. 如果有一个无线网卡,或3G无线上网卡也能区分二个网卡同类,且都是自动IP,那末办法
0 0