【发布时间】:2014-04-16 12:27:35
【问题描述】:
在 Java 中的服务器套接字实验室工作,我们的讲师为我们提供了代码的客户端。在项目中,客户端向服务器发送一个字符串。服务器然后转身将字符串发送回客户端。
客户
Socket server = new Socket(host, 30000);
// Sends the string to the Server
Socket server = new Socket(host, 30000);
OutputStream serverOut = server.getOutputStream();
PrintWriter serverWrite = new PrintWriter(serverOut, true);
serverWrite.println("Bryce");
//Manages Server's response of "Hello, Bryce!"
InputStream serverIn = server.getInputStream();
Scanner serverScan = new Scanner(serverIn);
serverScan.useDelimiter("$");
String resp = serverScan.next();
服务器
ServerSocket ss = new ServerSocket(30000);
Socket s = ss.accept();
InputStream is = s.getInputStream();
// Gets Message from Client
InputStreamReader reader = new InputStreamReader(is);
BufferedReader readerBuff = new BufferedReader(reader);
String stringFromClient = readerBuff.readLine();
// Sends Message back to Client
OutputStream oos = s.getOutputStream();
PrintWriter pl = new PrintWriter(oos, true);
pl.println("Hello, " + stringFromClient + "!");
每次我运行程序时,它都会弹出一个 NoSuchElementException 并引用客户端中的违规行:
String resp = serverScan.next();
这应该是一个相当简单的问题(我以前完成过这类问题)。如果我替换
String resp = serverScan.next();
与
String resp = serverScan.toString();
它工作正常,但由于我不允许修改客户端代码,我完全糊涂了。我在这里错过了什么吗?
【问题讨论】:
-
serverScan.next() 从客户端获取下一行。 serverScan.toString() 获取 Scanner 对象的文本表示(可能类似于
java.util.Scanner@0xF35AB395