近来研究一个课题,主要是同一个服务器上,有多个网卡,也就是多个ip,而也有多个socket的客户端程序在跑。不过,出去的时候,不同的socket客户端必须要带着不同的ip出去。
请问,怎么指定不同的socket客户,走不同的ip?

解决方案 »

  1.   

    socket.Remotaddr就可以了,是在TSERVERSOCKET的属性SOCKET中
      

  2.   

    我用的是delphi6的TClientSocket 控件
    socket.Remotaddr是一个read_only属性,不能绑定一个ip
    能写一个例子给我参考吗?
      

  3.   

    procedure TForm1.ClientSocket1Lookup(Sender: TObject;
      Socket: TCustomWinSocket);
    var
      SockAddrIn: TSockAddrIn;
      iRc:Integer;
    begin
      SockAddrIn.sin_family := AF_INET;
      SockAddrIn.sin_addr.S_addr   := inet_addr('10.1.1.3');
      SockAddrIn.sin_port := htons(1979);
      iRc:=bind(ClientSocket1.Socket.SocketHandle, SockAddrIn, sizeof(TSockAddrIn));
      if  iRc= 0 then
        ShowMessage('绑定成功!')
      else
        ShowMessage(Format('%d',[WSAGetLastError()]));
    end;//-------------------------------------------------这样就绑定了10.10.1.3的IP
    同时绑定1979端口如果屏蔽1979那行,那么该语句仅绑定IP,而端口由系统分配