我想模擬使用Java的UDP。我正在將一個文件從一臺主機發送到另一臺主機。這是接收器的一部分:Java - 關閉UDP套接字
server.setSoTimeout(10000);
while (true)
{
try
{
DatagramPacket received = new DatagramPacket(receivedData,receivedData.length);
server.receive(received);
out.write(received.getData());
}
catch (IOException e) {
break;
}
}
server.close();
該解決方案有效,但由於某種原因,我不滿意它。
發送方發送所有的數據包,然後關閉DatagramSocket。 Receiver獲取所有數據包並終止,但由於超時而終止。
因此,如果打開我的接收器並且10秒內不執行任何操作,我的Receiver將關閉,因此不會發送任何內容。
有沒有辦法在不指定超時的情況下終止循環?
我還想知道是否有另一個主機建立連接的方法 - 像ServerSocket.accept(),它基本上等待另一個主機連接。但是,我決定使用DatagramSocket,我可以找不到解決這個問題的辦法。
有沒有人知道會執行此操作的方法?
等等,你是否想讓接收器打開直到發送者發送文件? –
UDP是無連接協議。沒有連接的概念,只有單個數據包。也不保證這些數據包將以正確的順序到達。這聽起來像你想TCP,而不是UDP ... –
@RileyCarney好主意是不使用超時,但能夠表明所有的字節已發送 –