我开始学习服务器 - 客户端应用程序,我将这个Java代码示例用于客户端和服务器:
http://docs.oracle.com/javase/tutorial/networking/sockets/examples/EchoServer.java http://docs.oracle.com/javase/tutorial/networking/sockets/examples/EchoClient.java
我在两个Eclipse实例上运行了两个应用程序。
代码保持不变,除了更改:
//out.println(inputLine);
System.out.println(inputLine);
在服务器端。 对于印刷品#34; Hello"," Bye"在服务器端的main()的开头和结尾。当然,我将客户端使用的IP设置为我的计算机的IP(使用ipconfig - 不是唯一的IP)
根据我的理解,客户端发送的所有内容都应出现在服务器标准输出上,直到客户端键入" Cntrl C" (除非我理解错了)。
这是我在客户端编写的输入:
boooooooooo
baaaaaa
paaaaaaa
这就是我在服务器端得到的:
Hello
boooooooooo
这里有些事情让我意外 - 服务器似乎在main()中运行, 但是从第一次印刷后的某些原因来看,它停止了。
我尝试在while行的客户端代码中设置断点
while ((userInput = stdIn.readLine()) != null) {
out.println(userInput);
System.out.println("echo: " + in.readLine());
}
但程序流程遇到的只有两次,然后再到那里了。 当它输入时,userInput没有被评估,我怀疑因为readline()返回null。但为什么要呢?如果EOF字符未插入客户端的标准输入。