0
我目前使用Reliable UDP協議的Java實現,發現[here] [1]。該項目絕對沒有教程,所以我發現很難發現問題。Java異常 - 套接字已關閉,可靠的udp幫助?
我已經建立了客戶端和服務器。服務器在localhost:1234上運行,客戶端在localhost:1235上運行。服務器首先建立,並循環監聽連接。
然後我設置它發送一個數據包到服務器。當發送數據包,服務器調用handlePacket() -
DataInputStream i = new DataInputStream(client.getSocket().getInputStream());
short packetID = i.readShort();
i = null;
switch(packetID){
case 3:
Packeta packeta = new Packeta(client);
break;
}
} catch (IOException e) {
e.printStackTrace();
}
我目前使用一個名爲Packeta小啞類調試。當構造函數被調用時,它從流中讀取日誌並將其發送到控制檯。然而,總是構建時,它掛起10秒,產生錯誤之前 -
java.net.SocketException異常:在 lessur.engine.net.packets.Packeta關閉套接字....
。 (Packeta.java:15)
的構造Packeta -
public Packeta(LessurConnectedNode c) {
super((short)3, c);
try {
/*LINE 15*/ Logger.getLogger("adsfas").info("X was "+c.getSocket().getInputStream().read());
} catch (IOException e) {
e.printStackTrace();
}
}
它有一些待辦事項與輸入流。我不知道什麼是錯誤的,但是從閱讀其他線索來看,它可能是有多個輸入流的。我迷失了,請幫助。
是不是客戶端和服務器應該連接到同一個套接字?例如服務器連接到本地主機:1234和客戶端到本地主機:1234? – glindste
它在本地機器上如此 – liamzebedee
我不明白問題的所有細節,但最近我在其他情況下有相同的例外。在我的情況下套接字被連接超時關閉,我通過增加服務器的連接超時參數來解決問題 – shurik2533