2011-05-04 168 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

看來我試圖連接的服務器是套接字連接被阻止的唯一情況。我讓其他人連接到它,它工作。