2011-08-10 58 views
1

好吧,我沒那麼有經驗,所以對我來說很容易。Java - 如何保持一個活的套接字連接

確定,所以我有2個程序,一個用於服務器(我的PC)和一個用於所述客戶端(另一隻) ,這是設置

服務器監聽/接受>客戶端連接>服務器發送命令,以客戶端>客戶端執行。

這就是它,然後它斷開,但我需要客戶端保持連接,以便服務器可以繼續發送所需的命令。

我該如何做到這一點?

如果需要的話,我可以提供更多信息! 感謝所有幫助傢伙。

+0

這引發了一個問題,爲什麼斷開連接? – mre

+0

只要您保持對打開的套接字的引用,連接就應該保持打開狀態。 (禁止任何網絡故障。) – jjnguy

回答

8

當accept()返回時,服務器將收到一個套接字,並且只要該套接字未關閉,連接保持打開狀態。然後,客戶端將運行一個read/execute-command循環,直到服務器關閉連接。如果需要,我可以提供更多細節。

+0

是的,我嘗試在另一個線程中運行某種循環以保持連接處於活動狀態,但由於該線程正在忙於循環,因此無法讀取命令。 – Mark

+0

我會提供代碼來幫助你。等到我做完然後回覆你。 – Mark

+0

在客戶端的循環不是保持連接活着,它只是讀/寫/到套接字... java的serversocket /套接字類是TCP/IP套接字,所以他們不會斷開,直到你說斷開連接 –

0

有幾個正式的例子讓你開始Java sockets。另外,從Java開始,獲取這個設置非常簡單。

正如凱文所說,你會在一些開放的端口上打開一個ServerSocket。然後調用accept(),當客戶端連接到與ServerSocket相同的端口上的套接字時,它將返回。

另外,如果您希望客戶端程序從與主機不同的計算機連接,請確保您注意指定的主機。如果將主機指定爲「null」或「127.0.0.1」,則可能會在回送接口中遇到問題。