加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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个字符>非常简单的例子,你可能会在看到它之后提出一些其他问题 – 其中很大一部分也是依赖于实现的.此外,缓冲可以发生在各个级别(发送者,接收者,应用程序等).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读