Java 中的扫描仪似乎无法正常工作

问题描述 投票:0回答:0

我使用 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 循环中引入扫描器函数以使其可访问?-至少这是我对越界异常的理解。代码应该为客户端留下一个位置来键入他们的消息,然后将其发送到服务器,但事实并非如此。

java java.util.scanner java-io java-threads
© www.soinside.com 2019 - 2024. All rights reserved.