這是我的客戶端應用程序連接到服務器。我使用一個名爲DataPackage的對象來回發送信息。代碼在自己的線程中運行。客戶端while循環發送和從服務器接收
變量in
是ObjectInputStream
和out
是ObjectOutputStream
。
DataPackage dp = null;
while (true) {
try {
dp = (DataPackage) in.readObject();
if (dp != null) {
// Do stuff with received object
}
if (sendSomething) { // Send stuff
out.writeObject(new DataPackage("some data"));
out.flush();
out.reset();
}
} catch (ClassNotFoundException | IOException e1) {
e1.printStackTrace();
}
try {
t.sleep(50);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
我的代碼的問題是,我從來沒有達到我發送東西的部分,除非我從服務器收到的東西。循環在繼續到if (sendSomething)
之前等待來自服務器的內容。我應該如何構建我的代碼,以便我可以隨時發送內容並隨時收到內容?我希望你明白。
是否有可能創建2個客戶端線程,一個用於讀取,另一個用於寫入? – munyul