2011-04-22 37 views
0

我一直在使用Netbeans在另一臺計算機上製作java SE應用程序幾個月。應用程序使用Javas套接字,並通過端口4444將另一個應用程序連接到另一臺計算機(或同一臺計算機)。應用程序可以完美地連接到另一個應用程序:從netbeans運行,從命令行運行並從jar文件運行。在某些計算機上未連接Java套接字

現在我正在另一臺計算機上繼續該項目。起初我試圖在這臺電腦的Netbeans調試器上運行相同的源代碼。應用程序啓動,並連接到另一個應用程序,但它會立即停止。沒有錯誤信息或例外。屏幕不會凍結,但應用程序也不會開始彼此通信。

我也嘗試從命令行運行應用程序jar文件。出現同樣的問題。它使連接到另一個應用程序,但沒有其他的事情發生。

最後通過雙擊它從jar文件啓動應用程序。現在它建立連接並開始與另一個進行通信。

防火牆不阻止應用程序或netbeans。我也嘗試使用防火牆運行netbeans,但仍然沒有結果。 Java已經在兩臺計算機上進行了更新。由於某些原因,應用程序可以在一些計算機上完美運行,而在另一些計算機上,它會執行這種煩人的事情

+0

它通過雙擊jar文件而不是通過從命令行運行非常奇怪。你如何從命令行運行它? – 2011-04-22 13:49:07

+0

java -jar tbs.jar – gokotti 2011-04-22 16:52:43

回答

0

端口4444可能被另一個應用程序使用。

使用netstat實用程序進行檢查。

您的應用程序應該是可配置的。 I.E.端口4444不應該被硬編碼。

0

從正在運行的應用程序中獲取stack trace。它會告訴你程序在哪裏「卡住」。

您也可以將日誌記錄添加到您的應用中。這會將語句放到可以用來標識其內部狀態的文件或系統中。例如;當你寫一個插座:

OutputStream os = socket.getOutputStream(); 
while (true) { 
    System.out.println("write loop:enter"); 
    os.write("machine 1".getBytes()); 
    System.out.println("write loop:exit"); 
} 

祝你好運。

+0

好的。我開始在代碼行之間放置一些System.out.println(「stuff」)。出於某種原因(我完全不知道爲什麼),它在將此打印命令插入到等待用戶連接的循環中後開始工作。如果我將System.out.println(「...」)從循環中取出,應用程序將無法啓動。奇怪的。 – gokotti 2011-04-22 18:13:29

+0

這表明您的事件循環中可能存在潛在的時間問題。如果您可以使用循環代碼更新問題,這將有所幫助。 – 2011-04-23 17:06:45

相關問題