各位先進您好,
最近小魯我在撰寫一個網路相關的程式,
其中需要計算One-Way Delay(封包發送時間 - 封包接收時間)的程式,
程式架構為
Sender 每 1ms 發送一個UDP封包
Receiver 進行接收
目前碰到的問題是
Sender 發送多個封包至 Receiver 時,
用Wireshark監控網路時,發現UDP封包已經收到了,
但是C# 撰寫的 Receiver 不會立刻收到封包,
時常會出現「多個封包同時收到」的現像
例如:
在時間點 a、b、c、d、e 時 WireShark 監看收到五個封包,
但時間點 e 時,C#撰寫的Receiver才會接收到這五個封包。
Sender透過Wireshark監探的結果,應該不是Sender的問題。
重點是!!
有時候才會出現!有時候又非常正常(封包一到馬上就接收)。
起初認為是太多程式執行,導致該程式分到的CPU時間過少,
但是關掉其餘程式後,仍無法解決問題。
Receiver 程式執行的電腦硬體為
Notebook
CPU: i5-3230M
Ram: 4G*2
目前有用過 udpclient 及 socket(採UDP protocol)兩種class來撰寫,
都是採用非同步的接收,但仍都無法解決此問題。
請問有前輩開發過相關case有接觸到此問題嗎?
謝謝大家。