perl – autoflush在socket中做什么?我们为什么用它?
发布时间:2020-12-15 23:35:09 所属栏目:大数据 来源:网络整理
导读:我正在研究一些套接字代码,无法弄清楚为什么在socket上使用autoflush.就是这样的 my $sock = IO::Socket::Unix(Peer = $socketfilename,Type = SOCK_STREAM)autoflush $sock 1; 还有一些地方 autoflush STDERR 1autoflush STDOUT 1 对于一般filehnadles. 它
我正在研究一些套接字代码,无法弄清楚为什么在socket上使用autoflush.就是这样的
my $sock = IO::Socket::Unix(Peer => $socketfilename,Type => SOCK_STREAM) autoflush $sock 1; 还有一些地方 autoflush STDERR 1 autoflush STDOUT 1 对于一般filehnadles. 它有什么作用?如果我不使用它会发生或将会发生什么?请举一些实际的例子,以便我理解而不是简单的定义. 解决方法
数据通常不会立即在套接字上发送,它会被缓冲到某个点,然后一次性发送.
自动刷新意味着数据直接通过缓冲区然后刷新,而不是保留在缓冲区中等待其他数据到达和累积. 就如此容易. 没有自动刷新: Tick | DATA sent|Socket Buffer| DATA received .....|..........|.............|.............. 1 | XX | XX | (nothing) 2 | yy | yyXX | (nothing) 3 | ZZZ | ZZZyyXX | (nothing) 4 | t | (empty) | tZZZyyXX 使用自动刷新: Tick | DATA sent | Socket Buffer | DATA received .....|...........|...............|.............. 1 | XX | () | XX 2 | yy | () | yy 3 | ZZZ | () | ZZZ 4 | t | () | t >套接字缓冲区大小:8个字符>非常简单的例子,你可能会在看到它之后提出一些其他问题 – 其中很大一部分也是依赖于实现的.此外,缓冲可以发生在各个级别(发送者,接收者,应用程序等). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |