簡體   English   中英

定時記錄和重放UDP數據包

[英]Record and replay UDP packets with timing

我需要實現一種記錄UDP流的方法,以便稍后根據請求重播該流。 記錄和重播必須使用相同的時間(達到合理的分辨率,幾乎不被人類用戶感知,比如說10毫秒):如果原始流中的數據是從00:00到00:35的幾秒鍾,則靜音直到00: 55,然后從00:55到01:34發送更多數據,當我的應用程序重放該流時,必須觀察到相同的分布。

如果只是將udp流保存到磁盤上,然后在沒有此定時的情況下重播它,那么使用Socket,NetworkStream或UdpClient都是微不足道的。 問題是我無法解決一種修改標准接收算法的方法,以使其包含時序的方式,以便稍后可以通過send算法輕松地重播該時序。 另外,還應該支持一種在任何時間標記(例如,從00:15開始)開始重播的方法。

1)有什么方法可以輕松地在C#上實現此功能? 我們對此沒有任何嚴重的非功能性要求,我們只需要它簡單地工作即可。 任何有關實現它的方式的提示將不勝感激。

2)如果這確實不是一件簡單的事情,並且有人建議為此使用任何第三方組件,那么要求是擁有一個C#API(或一種通過代碼操作該組件的方法),並且希望是開源或免費使用的軟件。

非常感謝你。

這並不是C#的本機功能。 但是我會盡力做你的作業。

我要攻擊的方法仍然是將數據包存儲到磁盤。 設計一個二進制格式的自定義文件結構,保存有關數據報接收時間的數據,然后是UDP數據報本身。 然后,您可以讓一個程序讀回該文件,找出UDP負載在何時交付。 這將為您提供重放數據包並將其存儲以供以后使用所有本機C#代碼(無第三方模塊)重放所需的內容。 當然,這將需要您知道寫入文件或從文件寫入文件,並能夠將相關數據解析為C#中的類型化對象(時間跨度,對於數據報來說可能為byte []等)。 所有這些決定都取決於程序編寫者。

總而言之,我99%肯定沒有這種要求的本機功能。 這正是編程語言存在的原因。 因此,我們作為程序員可以為我們的客戶/客戶/老師提供出色的解決方案;)

暫無
暫無

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

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