2012-03-21 300 views
0

我必須通過將文件從客戶端上傳到服務器來模擬客戶端服務器的UDP關係。它也使用停止和等待協議。我的問題是我需要在我的服務器類中處理損壞的數據包的代碼?我在網上讀的地方,有一個校驗和錯誤**數據包損壞和UDP

UDP數據包將被堆被拒絕。在 換句話說,對於校驗和錯誤爲 的UDP數據包,「在另一端正確接收」是不可能的,因爲根本不會接收到數據包 。

**

是真的嗎?服務器會不會收到數據包,導致我的客戶端發生數據包超時?

+1

指定這個「某處」會很有幫助,所以我們可以檢查一下。網上有很多「somewheres」,不幸的是「某處」通常充滿了垃圾。 – 2012-03-21 19:03:43

+0

我剛剛看到它作爲論壇發表評論,所以其有效性非常可疑 – user1205853 2012-03-21 19:27:09

回答

4

UDP是有損協議,它不保證數據的傳遞。我想你對客戶端服務器UDP關係的模擬是「盡力而爲」(模擬協議本身),所以不需要,你不需要這個額外的代碼。

1

我已經在很多教科書中看到,一些堆棧實現會提供一個包含錯誤的數據包,指示校驗和失敗,而另一些則丟棄數據包。在實踐中,如果校驗和失敗,我曾經使用的所有系統都丟棄數據包。

如果數據包確實被丟棄,那麼timeout + resend就足夠了。