gpt4 book ai didi

Python 套接字刷新

转载 作者:行者123 更新时间:2023-12-03 05:06:02 25 4
gpt4 key购买 nike

我试图确保每次调用 socket.send 函数时,我的缓冲区都会发送(刷新)到我的服务器(使用 unix 套接字在 C 中)。

根据我的理解(以及我在这个板上看到的内容),只需禁用 naggle 算法。应该这样做,但我的服务器仍然收到 4096 字节 block 的数据(默认设置)...

我在 Python v2.5.4 中使用以下代码:

 self.sck = socket( AF_INET, SOCK_STREAM )

self.sck.setsockopt( IPPROTO_TCP, TCP_NODELAY, 1 ) # That doesn't seems to work...

self.sck.connect( ( "127.0.0.1", "12345" ) )

while( 1 ):
self.sck.send( "test\n" )
self.sck.send( "" ) # Still trying to flush...

启用/禁用 TCP_NODELAY 似乎没有任何效果...这是一个错误还是我遗漏了什么?

TIA

最佳答案

TCP 不提供任何类型的有保证的“数据包”发送到另一端。您正在尽可能快地发送数据,并且 TCP 有助于将数据批量化为一次可以发送的尽可能多的数据。您的服务器一次接收 4096 字节的数据,可能是因为这是它所要求的(在 recv() 调用中)。

TCP 是一种流协议(protocol),因此您必须自己实现某种类型的帧。没有内置的消息边界。

关于Python 套接字刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4407835/

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