gpt4 book ai didi

c - socket如何发送数据?

转载 作者:太空宇宙 更新时间:2023-11-04 08:05:31 26 4
gpt4 key购买 nike

我从互联网上得到了一个通过套接字发送数据的片段。

这是代码。

u32_t nLength = 0;
u32_t nOffset = 0;

do {
nLength = nFullLength - nOffset;
status = Socket->Send(((u8_t*) buff) + nOffset, &nLength);
if (status != ERROR_SUCCESS) {
break;
}
nOffset += nLength;
} while (nOffset < nFullLength);

我的疑问是:

send(sock_fd, buf+bytes, buflen-bytes, flags); 函数运行时,它会发送整个数据 ?

假设我有一个buff,长度为45 字节。所以它会像

send(buf+0, 45-0) = send(buf+0, 45);

所以它会发送长度为 45 的完整数据?这里的长度有什么用?最初它会 45 。不是吗?

最佳答案

嗯,不。无法保证它会发送您要求它发送的所有数据,这就是代码看起来像它的样子的原因。

send() 的手册页非常清楚地说明了这一点:

Return Value

On success, these calls return the number of characters sent. On error, -1 is returned, and errno is set appropriately.

例如,同样如此。顺便说一下,将常规 write() 写入本地文件。它可能永远不会发生,但接口(interface)的设计方式应该让您在发生时处理部分发送(和写入)。

关于c - socket如何发送数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43117552/

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