Borland Socket Server 能监听2个网卡的某一个端口吗 ???我的一台服务器,有2个网卡,1个网卡配置了Internt的IP地址,
1个网卡联接局域网(有局域网IP),我现在启用了Borland Socket Server,
局域网内的其他电脑可以连接到此应用服务器,但是,广域网的电脑
却连接不到此应用服务器,Ping这个服务器的IP地址是通的!!!???

解决方案 »

  1.   

    理论上应该是可以的,我帮你看看SocketServer的源码,看看它的侦听绑定是怎么做得。
      

  2.   

    function TCustomWinSocket.InitSocket(const Name, Address, Service: string; Port: Word;
      Client: Boolean): TSockAddrIn;
    begin
      Result.sin_family := PF_INET;
      if Name <> '' then
        Result.sin_addr := LookupName(name)
      else if Address <> '' then
        Result.sin_addr.s_addr := inet_addr(PChar(Address))
      else if not Client then
        Result.sin_addr.s_addr := INADDR_ANY//<<<----------------应该没问题的,绑定所有
      else raise ESocketError.CreateRes(@sNoAddress);
      if Service <> '' then
        Result.sin_port := htons(LookupService(Service))
      else
        Result.sin_port := htons(Port);
    end;我想应该没有问题,我的电脑有一个M和一块网卡,网卡连局域网,然后我拨号上网,我的服务器可以被网内网外的电脑连上。
      

  3.   

    但是,广域网的电脑
    却连接不到此应用服务器,Ping这个服务器的IP地址是通的!!!???你首先要保证这个IP地址的防火墙要打开你所监听的端口,假如中间隔了路由器,要通过端口映射的方式根据我的经验,所有的路由器都有端口映射的选项的,我有很多客户都是通过这种方式来访问局域网内的Borland Socket Server的,他们也是在广域网上