一台电脑两块网卡,一块是拨号上网的有公网ip比如叫作A,一块是局域网用的,有局域网ip叫作B,我要把A收到的数据转发到B,把B收到的数据发到A。我一直用的方法是建立sockA绑定到A,建立sockB绑定到B,再建立一些buff,然后A收到放指定buff,通知B去读取buff然后发走,同理B收到数据存到指定buff,通知A去读取然后发到A的网络。我一直想,有没有更好的办法去解决这个问题,这样作的效率总觉得太低了点。不知你们有什么好的办法。分不是问题。

解决方案 »

  1.   

    不可能,我肯定已这样做是不能实现的,还没听说用bind()就可以绑定到网卡的你要实现和效率,只有去NDIS驱动里面做:
    初始化时,分别绑定两个适配器,然后再PTRECV例程里面,直接用Ndissend()向那个目标网卡发送就可以了
      

  2.   

    这样做的好处是数据根本就到不了应用层,所以避免了内核层和应用层之间切换的时间,达到了最大效率,我估计这样做可能连winpcap都截不到数据
      

  3.   

    可以绑定到指定的IP,创建服务器端SOCKET时指定IP就行。
    你这种,将你的机器作为代理服务器不就行了?或让局域网的机器指定网关?
      

  4.   

    请教什么叫“把B的网卡设为A就可以了,它们就可以数据共享了”??是把B的网关设置成A的ip吗?