Perlのノンブロッキングソケットから読み取る方法を少なくとも3つ見つけました
$socket->recv
$socket->sysread
POSIX::read($socket,...
同じものに3つの異なる名前のように見えます、私はドキュメントを読みましたが、1つの大きな違いを見つけることができません。誰でも?
Perlのノンブロッキングソケットから読み取る方法を少なくとも3つ見つけました
$socket->recv
$socket->sysread
POSIX::read($socket,...
同じものに3つの異なる名前のように見えます、私はドキュメントを読みましたが、1つの大きな違いを見つけることができません。誰でも?
sysread
ストリーム (TCP) 指向 (ある送信が終了して別の送信が開始される場所は気にしない) であり、recv
データグラム (UDP) 指向 (気にする) です。
POSIX::read
ファイル記述子でsysread
動作しますが、ファイルハンドルで動作します。
ドキュメントの最良の情報源は次のとおりrecv()
ですman recvfrom
-それは基本的にそのシステムコールへのperlインターフェースです。これrecv()
は通常、非コネクション型(つまり、UDPソケット)に設定されたソケットで使用されますが、コネクション型(つまり、TCP)ソケットでも使用される場合があります。
との男の違いは次read()
のとおりです。sysread()
POSIX::read()
read(...)
ファイルハンドルを取り、IOがバッファリングされますsysread(...)
ファイルハンドルを取り、IOはバッファリングされませんPOSIX::read(...)
ファイル記述子を取り、IOはバッファリングされませんファイル記述子は、によって返される値(小さな整数)ですPOSIX::open()
。また、fileno()
関数を介してperlファイルハンドルのファイル記述子を取得できます。