敲门服务器

7
根据这个网站http://docs.oracle.com/javase/tutorial/networking/sockets/clientServer.html,它说:

服务器:“叩叩!”

客户端:“谁在那里?”

服务器:“Dexter。”

客户端:“Dexter 谁?”

服务器:“Dexter 用冬青树枝装饰大厅。”

客户端:“咕噜声。”

我认为如果服务器正在监听一个端口,那么它会等待敲门声,所以客户端会敲门,而服务器会回答谁在那里。我查看了其他网站,也看到了相同的客户端/服务器响应。

有人能解释一下为什么不是这样吗?


3
客户端不应该先发起“叩叩”吗?我认为协议是反过来的 ;-) - Joachim Sauer
1
@Joachim 我认为这就是问题的重点。我同意这个例子似乎是反过来的,所以很令人困惑。 - DNA
好吧,看起来我没有完全阅读问题:从协议的角度来看,服务器首先进行通信是有意义的,因为这通常是情况(HTTP在这里有点例外),以便告诉客户端连接到哪个服务器(软件版本、能力等)。从笑话的角度来看,客户端(即“连接”的人)肯定是打开“叩叩声”对话的人。 - Joachim Sauer
不一定(请看我的回答)- 如果服务器应该是一个笑话的提供者,那就不是这样。 - DNA
1个回答

12

那个教程说:

当客户端和服务器成功建立连接时,您将在屏幕上看到以下文本显示:

Server: Knock! Knock!
所以实际上客户端(在网络术语中)发起协议,但服务器发起笑话(在对话术语中)。我同意这相当令人困惑。 如果您将其视为一个笑话服务器,则需要请求笑话才能得到它! 如果反过来的话,你会有一个仅仅听笑话的服务器,那就没有那么有用了(除非你完全没有朋友)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接