

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# coreMQTT 程式庫
<a name="coremqtt"></a>

**注意**  <a name="out-of-date-message"></a>
此頁面上的內容可能不是up-to-date。如需最新更新，請參閱 [FreeRTOS.org 程式庫頁面。](https://www.freertos.org/Documentation/03-Libraries/01-Library-overview/01-All-libraries)

## 簡介
<a name="coremqtt-introduction"></a>

coreMQTT 程式庫是 [MQTT](https://en.wikipedia.org/wiki/MQTT) （訊息佇列遙測傳輸） 標準的用戶端實作。MQTT 標準提供輕量型發佈/訂閱 （或 [PubSub](https://en.wikipedia.org/wiki/Publish%E2%80%93subscribe_pattern)) 訊息通訊協定，在 TCP/IP 上執行，通常用於機器對機器 (M2M) 和物聯網 (IoT) 使用案例。

coreMQTT 程式庫符合 [ MQTT 3.1.1 ](http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/mqtt-v3.1.1.html)通訊協定標準。此程式庫已針對低記憶體使用量進行最佳化。此程式庫的設計涵蓋不同的使用案例，從僅使用 QoS 0 MQTT PUBLISH 訊息的資源限制平台，到使用 QoS 2 MQTT PUBLISH over TLS (Transport Layer Security) 連線的資源豐富平台。程式庫提供可組合函數的功能表，可加以選擇和組合，以精確符合特定使用案例的需求。

程式庫是以 **C** 撰寫，旨在符合 [ISO C90](https://en.wikipedia.org/wiki/ANSI_C#C90) 和 [MISRA C：2012](https://misra.org.uk/product/misra-c2012-third-edition-first-revision/)。此 MQTT 程式庫對任何其他程式庫沒有相依性，但下列項目除外：
+ 標準 C 程式庫
+ 客戶實作的網路傳輸界面
+ （選用） 使用者實作的平台時間函數

程式庫透過提供簡單的傳送和接收傳輸界面規格，與基礎網路驅動程式分離。應用程式寫入器可以選取現有的傳輸介面，或針對其應用程式實作自己的 。

程式庫提供高階 API 來連線至 MQTT 代理程式、訂閱/取消訂閱主題、發佈訊息至主題，以及接收傳入的訊息。此 API 採用上述的傳輸界面做為參數，並使用它來傳送和接收來自 MQTT 代理程式的訊息。

程式庫也會公開低階序列化程式/還原序列化程式 API。此 API 可用來建置簡單的 IoT 應用程式，僅包含必要的 MQTT 功能子集，無需任何其他額外負荷。序列化程式/還原序列化程式 API 可與通訊端等任何可用的傳輸層 API 搭配使用，以傳送和接收來自代理程式的訊息。

在 IoT 應用程式中使用 MQTT 連線時，我們建議您使用安全傳輸介面，例如使用 TLS 通訊協定的介面。

此 MQTT 程式庫沒有平台相依性，例如執行緒或同步。此程式庫確實有證明記憶體使用安全且沒有堆積配置[的證據](https://www.cprover.org/cbmc/)，因此適合 IoT 微型控制器，但也可完全可攜式至其他平台。它可以自由使用，並根據 [MIT 開放原始碼授權](https://freertos.org/a00114.html)進行分發。


****  

| coreMQTT 的程式碼大小 （使用 GCC for ARM Cortex-M 產生的範例） | 檔案 | 使用 -O1 最佳化 | 使用 -Os 最佳化 | 
| --- | --- | --- | --- | 
| core\_mqtt.c | 4.0K | 3.4K | 
| core\_mqtt\_state.c | 1.7K | 1.3K | 
| core\_mqtt\_serializer.c | 2.8K | 2.2K | 
| 預估總計 | 8.5K | 6.9K | 