簡體   English   中英

如何使用標准C / C ++“ UNIX計時器”為滑動窗口數據傳輸協議創建一系列數據包超時處理程序

[英]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.

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