似乎我寫的客戶端 - 服務器應用程序確實有效,但似乎並非每次都處理所有數據。Java - UDP通過套接字發送數據..沒有記錄。所有數據
我在Eclipse env的本地機器上測試它。
服務器:
private void sendData() throws Exception
{
DatagramPacket data = new DatagramPacket(outgoingData, outgoingData.length, clientAddress, clientPort);
InputStream fis = new FileInputStream(responseData);
int a;
while((a = fis.read(outgoingData,0,512)) != -1)
{
serverSocket.send(data);
}
}
客戶:
private void receiveData() throws Exception
{
DatagramPacket receiveData = new DatagramPacket(incomingData, incomingData.length);
OutputStream fos = new FileOutputStream(new File("1"+data));
while(true)
{
clientSocket.receive(receiveData);
fos.write(incomingData);
}
}
我曾經有過,如果別人在一段時間(true)循環來檢查數據包長度小於512個字節,因此它知道何時打破;
我想有一個問題,那白衣,但似乎這是奧凱現在我只需等待幾分鐘,然後停止Client.java應用
文件不轉移,但原文件是852KB,到目前爲止,我得到了777,800,850,但是從來都沒有。
您是否嘗試過沖洗溪流? – 2012-03-06 18:47:07
UDP是不可靠的。對於UDP該規範規定,UDP將獲得來自源的數據包接收器的「盡力而爲」,但包可能被丟棄和接收/發送器將永遠不會被通知。如果您需要可靠地發送數據,則需要實施某種丟包檢測方案或使用TCP。有一點奇怪的是,你在本地意義上丟失了很多數據包,但沒有合同規定本地UDP連接必須可靠。 – CodeBlind 2012-03-06 18:48:10
我明白,但我仍然想弄清楚我可以如何幫助儘可能多地獲得。 – 2012-03-06 18:50:43