gpt4 book ai didi

c - 无法使用c中的套接字接收大型数组

转载 作者:行者123 更新时间:2023-11-30 21:06:02 24 4
gpt4 key购买 nike

我正在使用 C 中的 POSIX 套接字将大小从一个树莓派发送到另一个树莓派。我正在从一个树莓派写入大小为 131072 的整数数组,写入命令的返回值显示所有 131072 个值都已写入。 ret = write(socket, &array, sizeof(array)) 使用相同的方法进行接收 ret = read(socket, &array, sizeof(array)) 显示所有发送的值没有被读取,而正确读取的值的数量也不是恒定的,而是在 10000 到 20000 之间变化。

我尝试在循环内使用读取函数,在每次循环迭代中读取整数

for(int i =0; i<131072; i++){
ret = read(socket, &value, sizeof(value));
data[i] = value;}

我能够接收所有值,没有错误或丢失。

最佳答案

底层协议(protocol)(可能是 TCP 和 IP)将数据分割成数据包,这些数据包可能作为单独的数据 block 到达接收应用程序。理论上,read() 可能会单独接收每个字节(即调用 2000 次时每次返回 1)。您的应用程序需要能够使用它。

关于c - 无法使用c中的套接字接收大型数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51011648/

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