我需要每兩秒重複發送4個字節,即00 00 00 F6
。
但是,IdUDPClient.SendBuffer
傳輸後沒有返回。爲什麼對IdUDPClient.SendBuffer的調用不總是返回?
我嘗試發送幾個字節,並且每次都返回。
這工作:
UDP.SendBuffer(RawToBytes(#0 + #0 + #0 + #1 + #127 + #128 + #246, 7));
這不起作用:
UDP.SendBuffer(RawToBytes(#0 + #0 + #0 + #246, 4));
我已經失敗嘗試了許多的我已經在各種相關StackExchange發現問題的建議。
我看到至少三種情形:
- 懸掛,Wireshark的看到1個傳輸。
- 工作重複傳輸,但不包含4個字節的數據。
- 有時字節>
7F
以3F
發送。
有人能指出我做錯了什麼嗎?
編輯:上面發生在一個線程中。如果TIdUDPClient
被放置爲表單上的可見組件,那麼它工作正常。
這可能是一個線程/重入問題?
請提供一個[最小,完整和可驗證示例](/ help/mvce)來演示問題。此外,您正在濫用'RawToBytes()'。使用'Send()'而不是'SendBuffer()'。或者使用'IdGlobal。ToBytes()'。或者手動構建一個TIdBytes變量。 –
@Remy Lebeau我做了一個MCV向你展示,並且工作。感謝推動我清理。一定是線程問題。回到繪圖板。 – AndersJ
@Remy Lebeau TidBytes變量的SetLength很容易忘記:-( – AndersJ