gpt4 book ai didi

c - 在C中通过套接字传输数据

转载 作者:太空宇宙 更新时间:2023-11-04 07:33:43 25 4
gpt4 key购买 nike

我有一个通过 Internet 套接字 (UDP) 传输数据的程序。所以定义了char数组作为数据包。例如。 char packet1[] = 11 (header[2 digit]) + 192.168.100.158 (sender_IP[15 digit]) + 006 (TTL [ 3 位数])+...(11192.168.100.158006...)。接收方根据数组索引提取数据(如0-1为header,2-16为sender_IP)。

我的问题是,当我将 sender_IP 定义为 [2-16] 时,如果 IP 地址短于 15 位数字(例如 192.168.100.5),则接收方会错误地提取数据。我的问题是,即使 IP 地址是 15 位或 14 位(不添加额外字符来定义 sender_IP 的字符串长度),我如何确保正确提取 sender_IP?

我想创建一个结构类型并定义类似`

的东西
struct packet {
char header[1];
char senderIP[15]
, TTL[2];
};

.但我想不出在 sendto(s, buf, BUFSIZE, 0,(struct sockaddr *) &si_other, slen) 这行上写什么而不是 buf,因为据我所知,buf 需要是 char。我需要 ASCII 表示形式的 IP 地址,以便将一些数据发送到 sender_IP 地址 (inet_aton(sender_IP, &si_other.sin_addr)

最佳答案

将 IP 作为 32 位 int 发送,或用零打包字符串以使其长度合适,例如192.168.100.005.

关于c - 在C中通过套接字传输数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10745786/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com