gpt4 book ai didi

sockets - 如果我在套接字上调用 `writev`,则完整响应是在内存中创建的,还是仅在客户端中创建的?

转载 作者:行者123 更新时间:2023-12-03 11:58:04 32 4
gpt4 key购买 nike

假设我通过TCP套接字连接到客户端,并在套接字上调用writev并包含3个项目,说“从地址A写入16个字节,从地址B写入32个字节,再从地址A写入16个字节”。

是将完整的64字节消息组装在我的机器的内存中,还是将向量中的每个项目分别发送,确认和遗忘在服务器上,以使完整的消息仅组装在服务器的另一端。 socket ?

最佳答案

Would the full, 64-byte message be assembled in the memory of my machine, or would each item in the vector be sent, acked, and forgotten on the server separately, such that the complete message is only assembled on the other end of the socket?


writev()从向量收集数据,并将其复制到套接字发送缓冲区。如果您处于阻塞模式,则在套接字发送缓冲区已满时它将阻塞。一旦进入套接字发送缓冲区,数据就会以TCP喜欢的任何方式发送。它很可能在一个TCP段中,或者一次可能坏到一个字节。与原始向量的元素没有任何必要的关联。

关于sockets - 如果我在套接字上调用 `writev`,则完整响应是在内存中创建的,还是仅在客户端中创建的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39278358/

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