gpt4 book ai didi

阻塞模式下的 Linux TCP 套接字

转载 作者:可可西里 更新时间:2023-11-01 02:34:05 25 4
gpt4 key购买 nike

当我以阻塞模式创建 TCP 套接字并使用 send(或 sendto)函数时,函数调用何时返回?

是否必须等到套接字的另一端接收到数据?那样的话,如果网络堵车,会不会堵很久?

最佳答案

发送方和接收方(以及可能的中介)都会缓冲数据。

数据发送成功并不能保证接收端已经收到。

通常写入阻塞套接字,只要发送方缓冲区中有空间就不会阻塞。

一旦发送方的缓冲区已满,写入将阻塞,直到其中有空间用于整个写入。

如果写入部分成功(接收方关闭套接字、将其关闭或发生错误),则写入返回的字节数可能少于预期。随后的写入应该给出错误或返回 0 - 这种情况在 TCP 套接字上是不可逆的。

请注意,如果后续的 send() 或 write() 出现错误,则之前写入的一些数据可能会永远丢失。我认为没有真正的方法可以知道有多少数据实际到达(或无论如何被确认)。

关于阻塞模式下的 Linux TCP 套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7947862/

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