簡體   English   中英

通過套接字發送和接收原始結構是否不安全?

[英]Is it unsafe to send and receive raw structures through sockets?

我正在開發一個遠程控制程序。 我需要一次發送和接收多個數據。 我使用以下解決方案:

struct PACKET
{
    int x;
    int y;
};

//...
PACKET p;
p.x = 10;
p.y = 5;
send(socket, (char*)&p, sizeof(PACKET), 0);

但是,我正在考慮這是否是一種安全的方法。 我應該找到其他解決方案嗎?

這是不安全的,除非您至少可以保證您的結構是POD (在您的情況下),並且兩個平台都使用相同的字節序 (不知道)。

編輯

可能還會發生一些其他問題:對齊是一個問題(編譯器可能會用其他位填充您的結構),然后可以使用不同的模型來表示數據本身。 感謝@Andrew和@Slyps的評論。

因此,畢竟,除非您確切地知道兩個平台上的數據對齊/表示模型/字節序,否則您並不安全。

暫無
暫無

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

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