![](/img/trans.png)
[英]How to send raw binary data over serial in C without non-native libraries in linux
[英]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.