我熟悉 C 语言的 TCP/IP 编程,但对 Perl 有点陌生。在 C 中,您需要围绕 recv() 语句编写一个循环,因为您不能保证在一个 recv() 语句中从远程服务器获取所有数据。
即
while(Size != 0)
{
Status = recv(Socket, Buffer, Size, 0);
Buffer = Buffer + Status;
Size = Size - Status;
}
我在 Perl 中看到的几乎所有示例都显示只打印从套接字获得的内容,而没有跟踪接收到的字节。
即
my $new_sock=$sock->accept();
while(<$new_sock>)
{
print "$_\n";
}
close($sock);
那么,Perl 是否以某种方式确保您获得所有数据而无需计算字节数?
如果答案是否定的,有人可以给我指出一个 Perl TCP 代码的示例,它确实像我上面的 C 示例一样保持跟踪吗?
最佳答案
< >
(readline 函数)级别相当高,非常方便。
IO::Socket
支持 recv
方法。
作为IO::Socket
继承自 IO::Handle
您可能还对 read
感兴趣或 sysread
密切模拟您正在寻找的低级 C 接口(interface)的方法...
关于c - Perl TCP 套接字编程 vs C recv() 函数。我需要跟踪收到的字节数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23204873/