簡體   English   中英

TCP套接字數據以XML數據包發送

[英]tcp socket data send in xml packet

我正在嘗試通過tcp套接字發送一些數據。 現在,事情不再是發送簡單的char *數據,我需要緩沖一些數據並在那里制作一個xml數據包結構,然后通過網絡發送該xml數據。 例如,我有一個ini文件,可將所有數據讀入相應的變量。 說:

[Device data ini]

DeviceID = 0042
Manufacturer = Company Name
VendorID = 00-291-647
Timestamp = 2014-08-13 12:40:11

現在,我需要根據上述數據制作xml,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<DataBlock xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <DeviceID>0042</Device>
    <Manufacturer>Company Name</Manufacturer>
    <VendorID>00-291-647</VendorID>
    <TimeStamp>2014-08-13 12:40:11</TimeStamp>
</DataBlock>

並將這些全部數據作為char *發送到服務器。 從簡單的char *數據結構構建xml數據包的最佳方法是什么。 代碼將用c ++編寫,而xml將在服務器端使用c#代碼進行解析。 任何建議或建議將無濟於事。

使用任何C ++標記器拆分輸入/源數據,以便分別處理每行(使用\\r\\n作為分隔符)。 例如,您可以使用boost::split來做到這一點。 之后,對於每一行,使用相同的技術提取鍵和值(使用=作為分隔符)。 您可以將解析的鍵和值放入std::map因為下一步需要它們。 最后一步-使用解析的數據簡單格式化目標xml字符串。 為此,您需要遍歷map元素並格式化結果字符串。 您還可以將XML模板字符串與每個屬性的占位符一起使用,並將其替換為解析后的值。

我建議先將數據轉換為XML並不是一個好方法,除非並且除非它非常重要或沒有其他選擇。 這樣做的原因是,當您以XML格式格式化值時,會增加要通過網絡發送的字節數。 取而代之的是,更好的方法是將值發送到另一端並將其轉換為XML,然后再移交給C#。 您可以使用結構方法進行發送和接收。

暫無
暫無

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

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