gpt4 book ai didi

c - 使用 read 和 write 系统调用时,套接字中的数据会发生什么变化?

转载 作者:太空狗 更新时间:2023-10-29 12:11:27 25 4
gpt4 key购买 nike

这是指 C 套接字。假设我已经将一些数据写入套接字,然后我调用读取,读取系统调用读取缓冲区大小(比如4096等)信息并删除套接字中的所有信息?基本上读取只是将搜索指针向前移动到它读取的那些字节,或者它会读取并删除套接字中的所有信息,以便下次调用读取时,它从第 0 个索引读取?

或者说我写入套接字而不从其他任何地方调用读取?数据会被替换或附加吗?

最佳答案

如果套接字上的可用数据多于您read() 的数据量,多余的数据将保存在套接字的缓冲区中,直到您读取它为止。短时间读取不会丢失数据。

写作也类似。如果多次调用 write(),每次写入都会将数据附加到远程主机上的缓冲区。同样,没有数据丢失。

(最终,远程主机上的缓冲区将填满。发生这种情况时,write() 将阻塞——本地主机将等待缓冲区清空,然后再发送更多数据。)

从概念上讲,套接字对中的每个方向都像两个对等点之间的管道。发送的整个数据流将按照发送时的相同顺序接收,无论一次读取/写入了多少数据。

关于c - 使用 read 和 write 系统调用时,套接字中的数据会发生什么变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43750515/

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