簡體   English   中英

如何以智能方式將UDP客戶端消息發送到UDP服務器解析消息

[英]How to send UDP client message in smart way to the UDP server parse the message

我在 PyQT(UDP 客戶端)中有一個應用程序,它通過 UDP/IP 將一些參數發送到樹莓(UDP 服務器)上的應用程序。

這個 Qt 應用程序有幾個領域,如 PID 參數、電機速度、傳感器預設等。

實際上,UDP 客戶端通過從 QT 應用程序中的每個字段獲取值並將數據附加到帶有分隔符 (',') 的字符串中來發送一個字符串,始終以相同的順序。 例如,“142.0、10.0、2.0、負、正”。
UDP 服務器接收此消息,拆分消息並將列表的每個項目移動到相應的變量。

它可以工作,但它並不智能,即使其中一個參數未更改,也會發送所有參數。

什么應該是僅發送特定參數而不取決於正確順序的智能方式? 還是只有改變的?

也許一些封裝協議通過 UDP 消息?

如果您真的想保持簡單並盡量減少現有代碼的更改,您可以為具有未更改值的參數包含空值。 例如,如果你有四個參數,那么假設它們都改變了,你會發送142,10,2,negative,positive ,但如果只有前兩個改變你會發送142,10,, 但是,恕我直言,應該不鼓勵這種臨時計划。

您可以將json與非常短的成員字符串一起使用。 例如{"a":142,"b":10} 您必須在短字符串鍵及其含義之間保持人類可讀的映射,並將它們與數據分開。 由於字符串可以是任何 Unicode 字符,因此在用完單個字符之前,您還有很長的路要走。 此外,Python本身支持 json

如果您不太關心數據包的長度,那么您甚至不需要短成員字符串:通過使用有意義的字符串,例如{"velocity":142,"acceleration":10}使您的數據包自我記錄{"velocity":142,"acceleration":10} .

暫無
暫無

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

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