歡迎來到神話般的網絡世界。我發現了我的激情。 :) 但是我在我的應用程序中有一個非常奇怪的行爲,我需要你的幫助來解決這個問題。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