0

嗨,我想通过在一个非常简单的 java 服务器上测试我的客户端应用程序是否正常工作。我的客户几乎每秒都会发送一个字符串。我的想法是服务器一旦收到字符串就会在 Eclipse 控制台中显示该字符串。但问题是简单的 java 服务器只打印出第一个字符串。下面是我从该站点获得的简单 Java 服务器

  package serverjava;

/* ChatServer.java */
import java.net.ServerSocket;
import java.net.Socket;

import java.io.IOException;
import java.io.BufferedReader;
import java.io.InputStreamReader;

public class serverjava {
    private static int port = 1234; /* port the server listens on */

    public static void main (String[] args) throws IOException {
        ServerSocket server = null;
        try {
            server = new ServerSocket(port); /* start listening on the port */
        } catch (IOException e) {
            System.err.println("Could not listen on port: " + port);
            System.err.println(e);
            System.exit(1);
        }

        Socket client = null;
        try {
            client = server.accept();
        } catch (IOException e) {
            System.err.println("Accept failed.");
            System.err.println(e);
            System.exit(1);
        }

        /* obtain an input stream to the client */
        BufferedReader in = new BufferedReader(new InputStreamReader(
                    client.getInputStream()));

        String msg;
        /* loop reading lines from the client and display them */
        while ((msg = in.readLine()) != null) {
            System.out.println("Client says: " + msg);
        }
    }
}

java 服务器是否能够每次启动只显示一个字符串的实例?如果是,我怎样才能让它在控制台中打印或显示每秒发送的所有字符串?

4

1 回答 1

0

您遇到的问题是您只读取了一次缓冲区。服务器等待客户端行,当它读取它们时,它会完成执行,因为“msg”为空。您必须有一个每秒或每分钟或每小时读取一次的进程......这意味着使用THREADS

当心!不要使用类似的 while(true) 结构,因为机器会超载。

于 2012-02-07T10:03:15.363 回答