2011-05-04 166 views
0

我正在创建一个个人工具,它通过Java中的HTTP提供文件。 对于HTTP Server部分,我使用com.sun.net.httpserver.HttpServer包。 当我使用localhost或外部主机名从我自己的PC连接时,它可以工作,但是当我尝试从外部客户端连接到它时,它不会。 我还想提一下,java的默认策略文件并没有被修改过,并且我在路由器后面,而且端口已正确转发。 我试着修改策略文件,但是我没有取得任何成功,虽然我不知道设置是否正确,或者它们是否被应用,并且我读了一个有类似问题的线程,但是使用了rmi已经通过设置java.rmi.server.hostname系统属性解决了,但我不认为这也适用于我的情况,因为服务器使用TCP。无法从外部客户端连接到Java服务器

下面是初始化服务器的代码:如果任何你们可以点我可以为了做来解决这个我真的很感激它

Settings settings = Controller.getInstance().getModel().getSettings(); 
      int port = settings.getHTTP_PORT(); 
      server = HttpServer.create(new InetSocketAddress(port), 20); 

      String cachepath = settings.getCachepath(); 
      if(!cachepath.startsWith("/")) cachepath = "/"+cachepath; 
      server.createContext(cachepath, new HTTPServerHandler()); 
          server.start(); 

+0

我也尝试禁用防火墙,但仍然没有运气。 – warwolf 2011-05-04 15:07:44

+0

你怎么知道转发是正确的?使用Wireshark检查客户端和服务器上的数据包流。 – 2011-05-04 15:23:37

+0

我知道它正确转发,因为我在该端口上启动了另一台服务器,并且该服务器甚至可以在外部运行。 – warwolf 2011-05-07 13:24:13

回答

0

看来我试图连接的服务器是套接字连接被阻止的唯一情况。我让其他人连接到它,它工作。