私は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 フォンで受信されません。これがどのように発生し、どのように修正できるかについてのヒントはありますか?