我使用 java 创建了一个简单的服务器客户端聊天。我的服务器端代码工作正常,但我的客户端仅连接到服务器,然后在发送消息时遇到问题。 这是客户端代码:
public class Client {
public static void main(String[] args) throws IOException {
final Scanner sc = new Scanner(System.in);
Socket clientSocket = new Socket("localhost", 4000);
System.out.println("on port: 4475");
while (true) {
System.out.println("Sending request to server");
BufferedReader in= new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
PrintWriter out = new PrintWriter(new OutputStreamWriter(clientSocket.getOutputStream()));
Thread send = new Thread(new Runnable() {
String msg;
@Override
public void run() {
while (true) {
System.out.println("connected to server");
**System.out.println("Type Message: ");**
msg = sc.nextLine();
System.out.println("Message sent");
out.print(msg);
out.flush();
}
}
});
send.start();
Thread receiver = new Thread(new Runnable() {
String msg;
@Override
public void run() {
try {
msg = in.readLine();
while (msg != null) {
System.out.println("Server: " + msg);
msg = in.readLine();
}
out.close();
clientSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
});
receiver.start();
}
}
}
代码在我双**的那一行停止工作,
这是客户打印出来的:
端口上的客户端:4475 向服务器发送请求 连接到服务器 输入消息: 向服务器发送请求 连接到服务器 输入消息: 向服务器发送请求 连接到服务器 输入消息:
在产生和索引越界异常之前,它基本上一次又一次地循环。
我还没有尝试太多,因为我不太确定问题到底是什么,我认为它一定与扫描仪有关,因为那是停止工作的代码行。我想知道我是否需要在 while 循环中引入扫描器函数以使其可访问?-至少这是我对越界异常的理解。代码应该为客户端留下一个位置来键入他们的消息,然后将其发送到服务器,但事实并非如此。