各位Delphi的高手救命!
    请问Socket怎样通过不同的网卡访问不同网段,如一个网卡访问内网,一个网卡访问外网。
    Socket绑定在固定的内网网卡和固定的外网网卡上;
    我的系统是windows的。
    现在公司要实现这个功能,我现在搞不懂,请大家帮忙一下。

解决方案 »

  1.   

    procedure Tform1.ClientSocket1Lookup(Sender: TObject;
      Socket: TCustomWinSocket);
    var SockAddrIn :TSockAddrIn;
        iRc:Integer;
    begin
      //Socket.Connect(1);
      SockAddrIn.sin_family := AF_INET;
      SockAddrIn.sin_addr.S_addr := inet_addr(pchar(bindip));//bindip是要绑定网卡的IP地址
      SockAddrIn.sin_port := htons(0);
      iRc:=bind(ClientSocket1.Socket.SocketHandle, SockAddrIn, sizeof(TSockAddrIn));
      if iRc<> 0 then
        Application.MessageBox('地址绑定失败!','系统提示',0+48);
    end;
      

  2.   

    多谢!这个实例我做过。不过发现这是不能实现绑定网卡的功能。
    到网上查过之后发现这是绑定ip,而不是绑定网卡,而绑定网卡和绑定ip是二会事。
    绑定网卡是不是联系到驱动层的?(这是另一个问题)
      

  3.   

    一开始也是这样认为,ip对应网卡,只要绑定ip,就可以绑定网卡。
    之后再到网上找过,说是不能通过绑定ip实现绑定网卡的。
      

  4.   

    我的结果是:ip绑定成功,但用内网的ip可以与外网的ip通信,而且查看收发包,发现收包不一定是经过设定的网卡(有时候是,有时候不是)。
      

  5.   

    是。
    sock绑定到指定的网卡通信,就是要求能收发包要经过指定的网卡。
      

  6.   

    自己组包可以达到要求,
    一般离CPU近的那个的索引是0,以此类推