最近做乙個物聯網裝置模擬器,c#+net4.5,採用m2mqtt.net.dll開發庫,從vs2017工具nuget安裝。伺服器採用emq 2.3.11穩定版。
計畫是乙個c#winform應用程式,批量模擬多個物聯網資料採集器上傳資料到伺服器。1分鐘乙個鏈結發一條指令。
結果在new 地347個mqttclient()物件後,connect伺服器時,出現記憶體異常。每次都是這樣。一時解決不了。就把m2mqtt庫換成mqttnet,這個庫分配記憶體沒問題,但批量tcp連線鏈結伺服器大概5分鐘左右,鏈結陸續斷開。也找不到原因。(這個問題已經查了emq.conf,以及mqttnet的客戶端設定,解決不了,今後慢慢研究了。),又mqtt開發庫換為m2mqtt庫,找到m2mqtt的原始碼,自己編譯為debug版本,加入到模擬器專案中引用。發現記憶體異常的**位置為:
}一般情況下,32位應用程式不至於3-4百個執行緒就不能分配記憶體的執行緒了吧?64位應用程式更是不需要特別考慮執行緒數量問題,足夠用的。因此,檢視了一下模擬器專案的屬性,終於找到問題的原因:
不知何時,專案調整過平台目標位x86。
修改平台目標位any cpu,重新編譯專案,記憶體分配問題解決。
winfrom列印程式 m2mqtt客戶端
1 先引用thoughtworks.qrcode和m2mqtt.net包 2 拖列印控制項printdocument,新增列印事件printdocument1 printpage,當列印時,呼叫printdocument1.print 3 列印預覽,拖列印預覽控制項,當預覽時呼叫 設定頁面的預覽的頁...
MQTT客戶端移植C語言
首先說明一下,下面demo是在linux上跑的,展現了嵌入式mqtt客戶端使用的一般流程,其核心就是把一些資料按mqtt協議打包好,再通過socket傳送到伺服器,你也可以移植到微控制器上,比如stm32,前提是能夠連線到服務通訊,一般wifi模組例如esp8266,內建了tcp ip協議棧,微控制...
MQTT客戶端移植到STM32
是新一代資訊科技的重要組成部分,也是 資訊化 時代的重要發展階段。其英文名稱是 internet of things iot 顧名思義,物聯網就是物物相連的網際網路。這有兩層意思 其一,物聯網的核心和基礎仍然是網際網路,是在網際網路基礎上的延伸和擴充套件的網路 其二,其使用者端延伸和擴充套件到了任何...