我找到至少3種方式從非阻塞套接字在Perl讀套接字recv,sysread和Posix :: socket之間的區別?
$socket->recv
$socket->sysread
POSIX::read($socket,...
看起來像3個不同的名稱,以同樣的事情,我讀的單證,但我無法找到一個巨大的differente。任何人?
我找到至少3種方式從非阻塞套接字在Perl讀套接字recv,sysread和Posix :: socket之間的區別?
$socket->recv
$socket->sysread
POSIX::read($socket,...
看起來像3個不同的名稱,以同樣的事情,我讀的單證,但我無法找到一個巨大的differente。任何人?
sysread
是面向流(TCP)(它不關心發送結束和另一個開始的位置),並且面向數據報(UDP)的是(它確實關心)。
POSIX::read
作品文件描述符,而sysread
作品的文件句柄。
recv()
上文檔的最佳來源是man recvfrom
- 它基本上是該系統調用的perl接口。請注意,recv()
通常用於建立非面向連接(即UDP套接字)的套接字上,但它也可用於面向連接(即TCP)套接字上。
read()
,sysread()
和之間的人的區別是:
read(...)
需要一個文件句柄和IO被緩衝sysread(...)
需要一個文件句柄和IO沒有被緩衝POSIX::read(...)
取文件描述符和IO沒有被緩衝文件描述符是由POSIX::open()
返回的值(小整數)。 此外,您可以通過fileno()
函數獲取perl文件句柄的文件描述符。