簡體   English   中英

如何從客戶端向套接字發送結構變量?

[英]How to send a structure variable from client to socket?

我正在進行套接字編程。 客戶端必須將結構變量發送到服務器。 我該怎么辦? 我已經創建了服務器和客戶端,但此時此刻我被困住了。

PS:我在用C編碼。

在客戶端使用write並在服務器端閱讀? 我認為您必須更加精確。它是否總是相同的數據結構? 如果不是,您如何知道收到的消息?

假設您要發送一個結構實例,則可以只發送二進制數據(將結構的大小寫成該結構)。 這假定您在該結構中沒有任何指針,並且您的結構定義在兩側都完全匹配(也具有相同的位對齊)。

這不是很可移植,並且做出了很多假設。

更好的選擇是將數據編碼為標准格式。 我喜歡JSON,主要是因為它很簡單,並且有大量的解析器。 您可以將該結構編碼為JSON(有關庫,請參見http://json.org/ ),通過套接字發送它,然后在另一端對其進行解碼。

您還需要發送數據的大小,因此您可能需要提出一個簡單的協議(前4個字節是JSON數據的大小,然后發送JSON數據)。

自定義協議非常糟糕,因此您可能需要研究標准化協議。 如果只想通過TCP發送二進制數據,請考慮使用WebSocket協議。 基本上就是我所描述的,但是更加靈活。

這就是我所做的,並且效果很好。

暫無
暫無

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

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