簡體   English   中英

在C中的UDP套接字上傳輸文件! 的Linux

[英]Transfering file on UDP socket in C! Linux

我正在編寫一個應用程序,用於在兩個使用UDP套接字的主機之間傳輸文件。

但是似乎某些數據在客戶端到達損壞。

我的問題是:如果服務器比客戶端快,則客戶端是否可以從套接字讀取損壞的數據?

我在服務器中使用sendto()並在客戶端中使用read() connect()在開始在客戶端中傳輸文件之前,我使用connect() ),如果是的話:如何停止服務器發送新數據,直到客戶端具有讀取所有先前的數據?

如果服務器比客戶端快,是否有可能客戶端從套接字讀取損壞的數據?

不,這是不可能的-IP層將對您看到的每個數據報進行錯誤檢查,並將其發送出去。

在客戶端讀取所有之前的數據之前,如何停止服務器發送新數據?

通常,您發送一個小數據包,接收方發送一個確認,然后發送下一個。 UDP的問題是,數據包可能會丟棄而不會告訴您事件重復,而且由於沒有擁塞控制,您可能會淹沒網絡。

那么,為什么要重新發明輪子, 使用TCP發送文件來處理可靠性和擁塞控制問題呢?幾十年來,每個人都在使用它,例如,此網頁是通過使用TCP的HTTP傳遞給您的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM