欢迎来到神话般的网络世界。我发现了我的激情。 :) 但是我在我的应用程序中有一个非常奇怪的行为,我需要你的帮助来解决这个问题。Java:ObjectInputStream,发送3条消息,仅收到2条消息
我做了一个简单的服务器客户端应用程序。 发送线程:
new Thread(new Runnable() {
public void run() {
try {
ObjectOutputStream objectOutputStream = new ObjectOutputStream(new BufferedOutputStream(socket.getOutputStream()));
objectOutputStream.writeObject(message);
objectOutputStream.flush();
} catch (Exception exception) {
exception.printStackTrace();
}
}
}).start();
接收线程:
new Thread(new Runnable() {
public void run() {
try {
while (!Thread.currentThread().isInterrupted()) {
ObjectInputStream objectInputStream = new ObjectInputStream(new BufferedInputStream(socket.getInputStream()));
Message message = (Message) objectInputStream.readObject();
Log.i("DEBUG", message);
}
} catch (Exception exception) {
try {
socket.close();
} catch (Exception exception) {
exception.printStackTrace();
}
}
}
}).start();
它工作得很好,但是如果我同时发送3个消息,我的接收线程只接收2个第一批。如果我更改订单,这并不重要。第三个总是失败。
我认为这是一个缓冲区大小问题。我该如何处理?谢谢。 :)
你应该使用相同的对象流套接字的生活,你需要如果您要发送或接收多线程,请在套接字上进行一些同步。 – EJP
谢谢你的帮助@EJP。你知道我在哪里可以找到这种结构的例子吗? – Denis