我正在尝试为程序制作套接字管理器。
我的问题是,为了我的需要,我需要从套接字检索确切数量的数据到缓冲区。
1) 使用静态数组
制作这样的静态缓冲区对我有用,但我不能总是知道要接收的数据的大小。
ubyte[2] buffer;
socket.receive(buffer);
这不起作用:
int size = buffer[0]; // for example ...
ubyte[size] buffer2; // crash at compilation because size is not known
socket.receive(buffer2);
所以我的第一个问题是:是否可以在编译时不知道其大小的情况下拥有静态数组?
我已经搜索了一种使用动态缓冲区的方法,但我遇到了其他问题。
2)使用切片从缓冲区中提取数据
ubyte[] buffer;
socket.receive(buffer);
ubyte[2] header = buffer[0..2];
这可行,但是如何从主缓冲区中删除提取的切片?使用带有元组的 std.algorithm 中的 remove 函数,这样:
buffer = remove(buffer,tuple(0,2));
对我不起作用我不知道为什么,我在编译时遇到此错误:
错误:未定义的标识符元组
这里有什么问题 ?
此外,我的套接字是非阻塞的,因为我希望它是异步的。如果套接字同时尝试在其上推送数据,则在主缓冲区上执行删除会导致问题?
感谢您阅读我,并为我糟糕的英语感到抱歉,我不是母语人士。