Perl网络编程:从套接字到RPC实现
1. IO对象和文件句柄
在Perl中,支持BSD套接字调用,该调用会返回一个文件句柄,就像 open
函数对文件和管道的操作一样。这个文件句柄可以作为所有内置输入输出操作符的参数,如 <>
、 read
、 sysread
、 print
、 write
、 syswrite
等。此外,它还能用于特定的套接字函数,如 send
、 recv
和 setsockopt
。
IO::Socket
模块的 new
方法会返回一个对象,该对象也可以作为这些I/O例程的参数。在内部,它会调用 socket
,并使用与文件句柄对应的类型全局符来存储其他属性。
对于 IO::Select
,如果性能至关重要,你可以自己实现它所做的事情:
$r_bitset = $w_bitset = $e_bitset = '';
# Monitor $sock1 for reading
vec($r_bitset, $sock1->fileno(), 1) = 1;
# Monitor $sock2 for writing
vec($w_bitset, $so