簡體   English   中英

通過C套接字發送原始二進制數據?

[英]Send raw binary data over C socket?

我正在通過C中的套接字發送加密數據。一切正常,直到我意識到發送的數據的大小比它應該的大得多。 下面的代碼描述了這種情況:

#include <stdlib.h>
#include <stdio.h> 
#include <string.h>

int main() {
    char temp[100], buffer[100];
    int n = 1234567890;
    sprintf(temp, "%d", n);
    printf("Original n has size: %d\n", sizeof(n)); // 4
    printf("Buffer size: %d\n", strlen(temp));      //10
    printf("Buffer: %s", temp);
}

問題是原始數字存儲為4字節整數,而緩沖區是逐字符存儲的,因此通過套接字發送的不是4個字節,而是一個字節字符的10s。

我想知道有沒有辦法將二進制數據作為原始數據發送?

更仔細地檢查send(2)系統調用。 它接受const void *buf 不是 char* void *您可以發送任何類型的數據。

這應該工作,

int n = 1234567890;
int net_n = hton(n);
send(sockfd, const (void *)(&net_n), sizeof(n), 0)

暫無
暫無

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

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