我正在使用套接字編程在C中編寫應用程序。我希望將數據從服務器節點發送到客戶端節點。我使用套接字描述符上的讀寫命令分別通過網絡獲取和發送數據。因爲使用的底層協議是TCP/IP,我最終收到了正確的數據。是否有可能在客戶端檢查是否正確接收數據,實際丟失了多少數據包並重新傳輸?我正在Linux(debian)環境中編寫這個應用程序。檢查正確接收的數據包的數量 - 套接字編程
任何幫助,高度讚賞!
-Rahulkumar
我正在使用套接字編程在C中編寫應用程序。我希望將數據從服務器節點發送到客戶端節點。我使用套接字描述符上的讀寫命令分別通過網絡獲取和發送數據。因爲使用的底層協議是TCP/IP,我最終收到了正確的數據。是否有可能在客戶端檢查是否正確接收數據,實際丟失了多少數據包並重新傳輸?我正在Linux(debian)環境中編寫這個應用程序。檢查正確接收的數據包的數量 - 套接字編程
任何幫助,高度讚賞!
-Rahulkumar
/proc/net/tcp
有一個字段,您只需find your socket在此列表中。
另一種方法是使用TCP_INFO
sockopt。 struct tcp_info
的當前佈局可在linux/tcp.h中找到。您要使用的字段可能是tcpi_retrans
。
+1對於TCP_INFO - 我希望我可以給更多upvotes – 2013-03-02 21:08:10
哇,這真的很酷的東西..謝謝你nemo和Karoly Horvath。我需要弄清楚使用它的方式。將成功完成後更新你們。謝謝! – 2013-03-02 21:15:16
不要忘記upvoting /接受答案,如果它爲你工作,所以它不是懸而未決,因爲沒有回答:) – nemo 2013-03-02 21:16:30
如果要確認數據是否正確,則還要發送校驗和(例如SHA1)。當然,沒有任何系統是100%萬無一失的...... – 2013-03-02 20:25:37
「有多少數據包實際上丟失和重新傳輸」 - posix套接字接口沒有辦法......我想這可以通過tcpdump/wireshark實現。 – 2013-03-02 20:30:43
恩,謝謝Oli Charlesworth和Karoly Horvath。我認爲可能有某種方式,因爲wireshark工具在它的實現中必須使用一些API來檢查重新傳輸的數據包的數量。我將檢查tcpdump的細節。再次感謝。 – 2013-03-02 20:45:51