gpt4 book ai didi

perl - 为什么当 "print"数据到套接字时丢失数据

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

我正在使用 perl 编写基于套接字的应用程序。我发现如果客户端启动两个打印
以如下方式在套接字句柄上:

print $sock "hello kitty";
#do some other stuff
print $sock "hello jack";

服务器端无法接收到“hello kitty”的全部消息。我不确定,但强烈怀疑某处发生了缓冲区覆盖......所以我在这里有两个问题
  • 为什么数据会丢失?是不是因为
    “打印”的缓冲区大小有限?
  • 如何避免?我可以接受其他
    打印方式以外的方法
  • 最佳答案

    我的直接猜测是套接字可能处于行缓冲模式,并且正在等待您在将数据发送到另一端之前打印换行符(或填充缓冲区)。如果是这样,那么 print $sock "hello kitty\n";应该让它按你的意愿工作。

    但是,正如 daxim 评论的那样,如果不查看所有相关代码,包括(但不限于)您如何创建套接字,我们就无法确定。

    关于perl - 为什么当 "print"数据到套接字时丢失数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3091632/

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