[英]How can I use standard C/C++ “UNIX timers” to create a series of packet timeout handlers for sliding-window data transmission protocols
我正在為學校項目實現滑動窗口數據傳輸協議。 通過套接字發送每個數據包后,必須在一定時間內接收到確認。 如果不是,則應重新發送數據包(這是回調函數中要使用的部分),並且應重置其計時器。
我們鼓勵我們使用“ UNIX計時器”實現算法的這一部分。 “ UNIX計時器”是指timer_create(),setitimer(),alarm()還是全都不是?
如果我要使用一個將信號處理程序用作超時處理程序功能的函數,那么問題將是告訴處理程序重新發送哪個數據包。 我可以保留一個有序的,等待確認的數據包全局列表,以從信號處理程序中進行訪問。 但是,我聽說在修改數據結構時可以調用信號處理程序,使其處於損壞狀態。 去這里最好的方法是什么?
alarm()具有第二級粒度。 您不想使用它。 查找select()調用。 您可以在不使用文件描述符的情況下使用它,以獲得更低級別的時間粒度。 您也可以使用它來等待fd。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.