我正在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.
}
然而,我发送的每几条消息中就有一条(如十分之一)没有被安卓手机接收。关于如何发生这种情况以及如何解决这个问题的任何提示?