[英]How do I configure a retransmit timeout in a C UDP socket program?
我在C語言中有一個簡單的UDP套接字程序。客戶端將數據傳輸到服務器並接收確認。 我已經知道如何配置超時,這樣,如果'recvfrom()'在特定時間內沒有收到任何警報,便會響起。
但是,我還需要處理其他幾種情況。 如果我收到來自意外地址的答復,或者答復的格式不正確怎么辦? 我不希望僅在警報響起時立即重新發送。
讓我知道是否需要澄清。
查看select(2)
和poll(2)
-您可以在套接字上等待指定的時間。 然后,可以根據需要以更短的超時時間重新開始等待。
如果您使用的是Linux,請查看epoll(7)
和timerfd_create(2)
。
如果要檢查接收的數據報,並查看它們是否來自意外的地址或格式是否錯誤,則必須對其進行處理。 為了使處理這些案件更加容易,您應該構建一個處理不同案件的狀態機。
例如,您可能具有以下狀態:
同樣,如果您檢測到這些其他錯誤情況之一,並且不想立即重傳,則將需要某種計時器或睡眠條件來等待,直到准備好重傳為止。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.