小编111*_*110的帖子

socket-> recv()vs. <>?

我正在尝试通过一个小的Perl学习项目,该项目需要从套接字中读取4个无符号整数.我无法获得超过1个整数读取,并在挖掘后找到了解决方案.但我需要了解我做得不对(并且经历过几本Perl书籍,perldocs等等都无济于事.)

示例1:这是成功的解决方案代码(原始),假设下面的套接字连接成功:

{
  local $/ = \16; # make <> read in 16 bytes with one swoop.
  my @integers = unpack "IIII", <$sock>;
  print "numbers: @val\n";
}
Run Code Online (Sandbox Code Playgroud)

例2:我在下面尝试过这个.如果我在解压缩之前打印输入,我只得到一个整数:

my $input;
$sock->recv($input,16,0);
my @integers = unpack("IIII", $input);
Run Code Online (Sandbox Code Playgroud)

具体问题:

  1. 在例1中,什么是"$ /"?它是如何"改变"<>,我认为这是STDIN?
  2. 在示例2中,为什么我的recv()不会从套接字中取出多于一个整数?我的理解(per perldoc)是"SIZE"参数默认为"bytes",整数是4个字节?

任何帮助,指针等都表示赞赏.顺便说一下,"学习项目"是一个非常酷的东西.

sockets perl recv

6
推荐指数
2
解决办法
4634
查看次数

标签 统计

perl ×1

recv ×1

sockets ×1