-1

私はServerSocketメインアプリケーションとは別のスレッドでこのようなものに書いています:

    BlockingQueue<String> queue = new Queue<>();

    // THREAD
ServerSocket server = new ServerSocket(2222);
Socket socket = server.accept();
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(),"UTF-8"));

while (true) {
    String line = queue.take();

    if (line != null) {
        try {
            logger.debug("Sending command " + line);
            writer.write(line + "\n");
            writer.flush();
        } catch (IOException e) {
            logger.error("IO error", e);
            e.printStackTrace();
        }
    }

}

queue外部から移入される場所。

ものの送信は正常に機能し、ポート 2222 で telnet を使用し、デバッグ ロガーの出力を読み取ることで、これを確認できます。

Android では、次のコードを使用してポート 2222 で読み取りを行っています。

Socket s = new Socket("host",2222);
BufferedReader reader = new BufferedReader(new InputStreamReader(s.getInputStream(),"UTF-8"));
while((line = reader.readLine()) != null) {
    Log.d("PAINT","RECEIVED::" + line);

    // create Message, Bundle, send Message to handler.

}

ただし、送信するメッセージの数に 1 つ (10 分の 1 など) は、Android フォンで受信されません。これがどのように発生し、どのように修正できるかについてのヒントはありますか?

4

1 に答える 1