gpt4 book ai didi

python - python socket.sendall 成功返回是什么意思?

转载 作者:可可西里 更新时间:2023-11-01 02:37:08 26 4
gpt4 key购买 nike

在我的代码中我写了这样的东西:

try:
s.sendall(data)
except Exception as e:
print e

现在,我可以假设如果 sendall 没有抛出任何异常,套接字的另一端(它的内核)确实收到了“数据”吗?如果不是,那意味着我需要发送一个对我来说似乎不合理的应用程序确认。

如果我可以假设另一方的内核确实收到了“数据”,那么这意味着“sendall”仅在它看到我放入“数据”的所有字节的 tcp ack 时返回,但我看不到任何文档为此,相反,通过搜索网络,我觉得我不能假设收到了 ack。

最佳答案

can I assume that if there wasn't any exception thrown by sendall that the other side of the socket (its kernel) did receive 'data'?

不,你不能。它告诉您系统已成功发送数据。它不会等待对等方确认数据(即在操作系统内核接收到的数据),甚至不会等到数据被对等应用程序处理。此行为并非特定于 python。

通常情况下,对等系统内核是否收到数据并将其放入应用程序套接字缓冲区并不重要。真正重要的是它是否在应用程序内部接收和处理数据,这可能涉及复杂的事情,例如将数据插入数据库并等待成功提交,甚至将数据转发到另一个系统。由于由应用程序决定何时真正处理数据,因此您必须使您的应用程序特定 ACK 以表示处理成功。

关于python - python socket.sendall 成功返回是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29810337/

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