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ファイルハンドルのファイル記述子を取得できます。