为什么有些网络API能够接受远程连接而其他网络API不能接受?

时间:2012-08-25 03:08:49

标签: windows tomcat networking wininet windows-firewall

我无法用Windows上的Web服务器解释这种行为。它位于域防火墙中,并将Windows防火墙设置为域策略。

  • 本地Web服务器 - 均为localhost:port和FQDM:port
    • Tomcat OK
    • IIS OK
    • WEBrick OK
    • Jenkin的服务器 - 确定
  • 远程访问 - 使用FQDM:port
    • Tomcat没有连接
    • IIS无连接
    • WEBrick 确定
    • Jenkin的服务器 - 确定

我不明白WEBRick和Jenkins用来接受远程连接的服务器。

我应该研究其他诊断吗? 是否可以将Tomcat配置为使用类似的方法?

2 个答案:

答案 0 :(得分:0)

我不能说很多关于WEBRick或Jenkins,但是对于Tomcat - 如果你看看Tomcat 7源代码(StandardServer.java),你会看到:

// Set up a server socket to wait on
try {
    awaitSocket = new ServerSocket(port, 1,
              InetAddress.getByName(address));
 } catch (IOException e) { ... }

这意味着,无论您在地址中指定了什么(在server.xml中),都要经过这个。

InetAddress.getByName的{​​{3}}说:

  

主机名可以是机器名,例如“java.sun.com”,或   其IP地址的文本表示。如果是文字IP地址   提供时,只检查地址格式的有效性。

如果我是你,我会先尝试设置IP地址,看看是否有任何问题。

第二步是检查您的本地名称解析策略是否不正确(hosts文件)。我一直处在本地hosts文件不正确或包含不可解析的条目的情况下,导致各种奇怪的问题,例如你所拥有的。

答案 1 :(得分:0)

听起来您的远程请求永远不会到达不回复的服务。这意味着它是防火墙或NAT问题。我不认为这是一个配置问题,因为你从本地机器localhost:port和FQDN:端口都说工作。

要进行诊断,一个好的第一步是查看是否与远程网络进行远程通信。

  

telnet主机名端口

如果您没有看到Connected to FQDN.响应,则防火墙,硬件或本地软件防火墙会阻止连接。您需要确保防火墙的所有正确端口都打开,转发等。