gpt4 book ai didi

C++ 通过 UDP 套接字发送结构

转载 作者:行者123 更新时间:2023-11-28 03:22:03 24 4
gpt4 key购买 nike

我正在尝试通过 UDP 套接字发送结构,我收到了正确的 DRB_count 值,但无法收到 KenbStar 的值。我究竟做错了什么?我使用同一台机器,在具有相同端口的客户端和服务器中环回 ip 127.0.01。

客户:

typedef struct tseTargetCellInformation{
UInt8 DRB_count;
UInt8 *KenbStar;
}tTargetCellConfiguration;

trecTargetCellConfiguration *rx_TargetCellConfiguration_str;

rx_TargetCellConfiguration_str = (trecTargetCellConfiguration*)malloc(sizeof(trecTargetCellConfiguration));

send_TargetCellConfiguration_str->DRB_count=1;
send_TargetCellConfiguration_str->KenbStar = (UInt8*) malloc(1);
send_TargetCellConfiguration_str->KenbStar[0]= 0x5b;

sendto(sd, (char *) (send_TargetCellConfiguration_str), sizeof(tTargetCellConfiguration), 0, (struct sockaddr *)&server, slen)

服务器:

typedef struct tseTargetCellInformation{
UInt8 DRB_count;
UInt8 *KenbStar;
}tTargetCellConfiguration;

rx_TargetCellConfiguration_str->KenbStar = (UInt8*) malloc(1);

recvfrom(sd, (char *) (rx_TargetCellConfiguration_str), sizeof(trecTargetCellConfiguration), 0, (struct sockaddr*) &client, &client_length);

最佳答案

因为 KenbStar 是一个指针,所以你必须 dereference为了发送它指向的值,或接收值。否则,您只是发送和接收指针(即,不是指向的内容),这通常毫无意义(特别是如果客户端和服务器是不同的进程)。

换句话说,像这样:

sendto(sd, (char *) send_TargetCellConfiguration_str->KenbStar, sizeof(UInt8), ...

recvfrom(sd, (char *) rx_TargetCellConfiguration_str->KenbStar, sizeof(UInt8), ...

但是,将 KenbStar 设置为普通成员可能是最简单的方法,就像 DRB_count 一样,除非您有特定原因要求它必须是指针。然后您只需一次调用即可发送(和接收)整个结构。

关于C++ 通过 UDP 套接字发送结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15156674/

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