7

PHPのマニュアルを読むと、socket_recv関数とsocket_read関数は同じように見えますが、どちらの関数もクライアントからデータを取得します。

これら2つの機能の違いを教えてもらえますか?

4

3 に答える 3

15

socket_recv受信したバイト数を socket_read返す 受信したデータを返す

バッファからバイトを読み取ることsocket_recvができ、受信したバイト数を知ることができます。socket_readバッファから特定の量のデータのみを読み取ることができます

于 2012-05-30T09:28:52.807 に答える
2

http://www.faqs.org/faqs/unix-faq/socket/#bから:

2.18. read() と recv() の違いは何ですか?

Andrew Gierth (andrew@erlenstar.demon.co.uk) から:

read() は、0 の flags パラメーターを指定した recv() と同等です。flags パラメーターの他の
値は、recv() の動作を変更します。
同様に、write() は flags == 0 を指定した send() と同等です。

于 2012-05-30T09:33:46.580 に答える
1
MSG_WAITALL  Block until at least len are received. However, if a signal is caught or the remote host disconnects, the function may return less data.
MSG_DONTWAIT     With this flag set, the function returns even if it would normally have blocked.

もちろんsocket_recvを使用してデータが受信されるまで関数を待機させるブロッキング機能ですが、socket_readを使用すると、バイトがすでに受信されて待機しないと想定されるため、何も返さない場合があります。

Note:

socket_read() returns a zero length string ("") when there is no more data to read.
于 2012-05-30T09:55:03.300 に答える