2011-08-12 59 views
1

我想實現Sun的例子套接字程序,即KnockKnock服務器和客戶端在這裏找到:http://download.oracle.com/javase/tutorial/networking/sockets/readingWriting.html爪哇 - 故障運行的基本插座的組網方案

所以我建立了3個文件(EchoClient,KnockKnockServer,KnockKnockProtocol)成一個項目,建立他們,然後去到CMD運行它們:

> java KnockKnockServer 
> Could not listen on port: 4444. 

而且,我與EchoClient(而不是它意味着很多,因爲服務器不工作)的麻煩。我得到如下:

> java EchoClient 
> Couldn't get I/O for the connection to: localhost 

有一件事我在EchoClient類變化是試圖連接到「本地主機」,而不是他們的榜樣機「lucid中」。儘管如此,我完全不瞭解I/O錯誤。

所以我需要弄清楚這些東西,以便日後可以適應它。以下是我想知道的:我怎麼知道KK服務器上的端口監聽?如果我想連接到EchoClient中的另一臺計算機,我會直接將他們的(IPv4)IP地址替換爲「localhost」嗎?

感謝您的幫助

+0

也許一個程序已經在使用端口4444是什麼,你說什麼時候在命令行上運行'lsof -i:4444'? –

+0

呃,我得到''lsof'不被識別爲內部或外部命令,可操作程序或批處理文件。「 – JDS

回答

4

嘗試不同的(更高的端口),因爲4444可能已經在你的機器上使用:

技術說明端口4444:

端口4444專門分配給Kerberos 5身份驗證功能,特別是在各種系統(包括在Mac OS X平臺下運行的系統)中實施Kerberos 4。通信端口4444用於將Kerberos 5憑證轉換爲可接受的Kerberos 4格式。

source

+0

謝謝你。我可以嘗試的其他一些好的端口是什麼?我不太瞭解不同的港口。 – JDS

+1

嘗試10000以上的任何數字。您的MAX是65535,我想。 – Steve

+0

好吧,我試了4601(發現它在這個答案中的鏈接),現在我沒有得到錯誤,但命令行只是掛在那裏。看起來程序被凍結了。那是怎麼回事? – JDS

1

該教程減免規則#2有關處理情況例外:它彌補了它自己的錯誤消息「無法獲取我的連接/ O:...」而不是打印的實際例外。改變它做那個,然後你有一些希望找出哪裏出了問題。

我大約八年前抱怨該教程;-(

(規則#1:打印東西。

0

昨天我有這個問題時,我努力學習同樣的事情你是

1)確保在服務器和客戶端具有例如相同的端口:

kkSocket = new Socket("localhost", 802); //Client 

serverSocket = new ServerSocket(802); //Server (我遇到了意外這個問題)

2)嘗試改變這兩個服務器的端口和客戶端的端口爲10000或更高

3)程序輸出「敲!敲!「並且比你需要輸入輸入。(掛起你描述的可能只是等待輸入服務器)試試這個

0

: 變化taranis主機名localhost

kkSocket = new Socket("localhost", 4444);