gpt4 book ai didi

c - 写入n个字节并读取n个字节: sending number of bytes to read using uint16_t

转载 作者:行者123 更新时间:2023-11-30 20:21:43 28 4
gpt4 key购买 nike

我一直在使用这些readwrite函数(由@alk提供)。
问题是我不知道如何正确发送 uint16_t data_size;
这是我发送一般示例缓冲区的实际代码:

uint16_t data_size;
int retry_on_interrupt = 0;
char buffer[] = "Hello world!";
data_size = (uint16_t) sizeof(buffer);

/* sending data_size */
writen(socket, data_size, 2, retry_on_interrupt);

/* sending buffer */
writen(socket, buffer, sizeof(buffer);

这是我接收一般示例缓冲区的实际代码:

/* receiving data_size */
readn(socket, &data_size, 2);

/* receiving buffer */
readn(socket, buffer, data_size);

但这不起作用,我认为因为 writen 需要 const char *,而不是我使用 uint16_t...
这些调用应该如何进行?谢谢。

最佳答案

替换

writen(socket, data_size, 2, retry_on_interrupt);

if (-1 == writen(socket, &data_size, sizeof data_size, 1))
{
perror("writen() failed writing size");
exit(EXIT_FAILURE);
}

并替换此行

writen(socket, buffer, sizeof(buffer);  

if (-1 == writen(socket, buffer, data_size, 1))
{
perror("writen() failed writing pay-load");
exit(EXIT_FAILURE);
}
<小时/>

您肯定也想在阅读功能中添加错误检查!

<小时/>

您还想处理可能的 endianness (byte-order)在不同硬件平台之间发送/接收时出现问题。

关于c - 写入n个字节并读取n个字节: sending number of bytes to read using uint16_t,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41662862/

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