2012-10-29 40 views
7

根據這個網站,http://docs.oracle.com/javase/tutorial/networking/sockets/clientServer.html 它這樣說:敲敲服務器

服務器:「敲敲!」

客戶:「誰在那裏?」

服務器:「德克斯特」。

客戶:「德克斯特誰?」

服務器:「德克斯特大廳,冬青樹枝。」

客戶:「Groan。」

我認爲,如果服務器正在監聽端口,它正在等待敲門聲,所以客戶端將敲門,服務器會說誰在那裏。我也檢查了其他網站,並看到相同的客戶端/服務器響應。

有人可以解釋爲什麼不是這樣嗎?

+3

客戶不應該以敲門聲開始嗎?我認爲協議是向後的;-) –

+1

@Joachim我認爲這是問題的關鍵。我同意這個例子似乎倒退,所以令人困惑。 – DNA

+0

好吧,看來我沒有完全讀過這個問題:從* protocol *的觀點來看,服務器是第一個可以通信的,因爲它通常是這種情況(HTTP是種 - 這裏是一個例外)告訴客戶端連接了哪個服務器(軟件版本,功能等)。從*笑話*的角度來看,客戶(即一個「連接」)肯定意味着啓動敲門聲。 –

回答

12

tutorial說:

當你順利拿到客戶端和服務器之間的連接,你會看到屏幕上顯示以下文字:

Server: Knock! Knock! 

所以它實際上是在客戶端啓動協議(以網絡方式),但啓動笑話的服務器(以對話方式)。我同意的是相當混亂。

如果你認爲它是一個笑話服務器可能會有幫助 - 爲了得到一個笑話,你必須要求一個! 如果反過來,你會有一個服務器,只聽笑話,這是沒有用(除非你絕對沒有朋友)。