Java-сервер (простой пример), отображающий только первую отправленную строку - PullRequest
0 голосов
/ 07 февраля 2012

Привет, я хочу проверить, работает ли мое клиентское приложение, протестировав его на очень простом 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-сервер отображать только один экземпляр строки за запуск? Если да, как я могу заставить его печатать или отображать в консоли все строки, которые отправляются каждую секунду?

1 Ответ

0 голосов
/ 07 февраля 2012

Проблема в том, что вы читаете буфер только один раз.Сервер ожидает клиентские строки, и когда он читает их, он завершает выполнение, потому что «msg» равно нулю.У вас должен быть процесс, который читает каждую секунду, или минуту, или час ... Это означает использование THREADS .

Будь осторожен! Не используйте структуру while (true) чего-то подобного, потому что машина будет перегружена.

...