我正在浏览Java TCP Client Server tutorials,他们正在解释echo服务器是如何工作的以及TCP客户端如何与echo服务器交互。这是java教程中的一个错字吗?
对于TCP客户端,他们给了这个片段,并说明它是什么:
String hostName = args[0];
int portNumber = Integer.parseInt(args[1]);
try (
Socket echoSocket = new Socket(hostName, portNumber);
PrintWriter out =
new PrintWriter(echoSocket.getOutputStream(), true);
BufferedReader in =
new BufferedReader(
new InputStreamReader(echoSocket.getInputStream()));
BufferedReader stdIn =
new BufferedReader(
new InputStreamReader(System.in))
)
以后,下面的几行(约8行),他们说:
要通过套接字将数据发送到服务器,EchoClient示例需要写入PrintWriter。为了得到服务器的响应,EchoClient从BufferedReader对象中读取stdIn,它是在try-with resources语句中的第四个语句中创建的。
为什么它说
要获得服务器的响应,EchoClient从BufferedReader类对象标准输入
是不是stdIn
用于从系统的标准输入,而不是读书读套接字的标准输入? Echo客户端是否应该从in
BufferedReader中读取?
如果我错了,你能澄清我的误解吗?
http://docs.oracle.com/javase/tutorial/networking/sockets/readingWriting.html
编辑
也许我不是足够清晰。当客户端必须从服务器获取数据时。是否得到它的形式是:
BufferedReader in =
new BufferedReader(
new InputStreamReader(echoSocket.getInputStream()));
或本:
BufferedReader stdIn =
new BufferedReader(
new InputStreamReader(System.in))
的文档从第二个说。这没有意义,它应该是第一个
你永远不会_write_到标准_input_流。 – Mat 2014-09-01 20:37:57
@Mat是的,你是对的!错过我的结局。 – Krimson 2014-09-01 20:40:47
将链接添加到实际的javadoc会很有用,但我认为你是对的,它是不正确的。 – wvdz 2014-09-01 20:43:27