gpt4 book ai didi

sockets - 在D中将结构用作缓冲区

转载 作者:行者123 更新时间:2023-12-03 11:52:07 25 4
gpt4 key购买 nike

我想从套接字读取,并将所有输出转发到套接字。在C语言中,您只需转发一个指向该结构的指针,然后一个整数即可说明您的结构有多大。

但是,在D中,实际上有数组,而不仅仅是指针。如何从Socket读入D中的结构?

struct MyStruct {
ubyte myVar;
}

MyStruct myStruct;
socket.receive(myStruct); // How to do this

最佳答案

通常,您可以通过将任何ubyte []强制转换为指针,然后对其进行切片来从其中获得ubyte []:

ubyte[] buffer = (cast(ubyte*)&myStruct)[0 .. myStruct.sizeof]);

几天前,聊天室中的某人展示了一种甚至很短的方法,但我不记得它是什么...

D数组是指针和长度对,因此从概念上讲,它与C指针和整数相同。

BTW for Sockets,别忘了检查返回值,因为您可能无法获得足够的数据来一次填充整个结构!一旦有任何数据,receive就会返回数据,这在开放网络上可能只是一个数据包,使阵列/结构没有完全装满。

关于sockets - 在D中将结构用作缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22972859/

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