したがって、私はこのツールを作成しており、これらのソケット(これらではありません) を使用しています。それらとの違いは、2 番目のソケットは厳密にストリームベースのソケットを使用していると推測します。問題は、私が使用しているソケットでsocket_get_statusを使用できないことです。
socket_get_status以外に利用可能なバイト数を取得する方法はありますか?
したがって、私はこのツールを作成しており、これらのソケット(これらではありません) を使用しています。それらとの違いは、2 番目のソケットは厳密にストリームベースのソケットを使用していると推測します。問題は、私が使用しているソケットでsocket_get_statusを使用できないことです。
socket_get_status以外に利用可能なバイト数を取得する方法はありますか?
から返されるストリームはfsockopen()
、通常のソケットのマネージド ラッパーです。未読バイト(おそらくあなたが求めているもの)はread()
、ソケット上(ラッパー自体によって作成されたもの)とfread()
ラッパー上(スクリプトによって作成されたもの)の違いです。
ラッパーは 8192 バイトのチャンクで読み取りますが、fread()
orは一度にすべてのデータを読み取れない可能性があります。これが、クエリできるメタ データ フィールドがfgets()
ある理由です。unread
それが役に立つかどうかは別のことです;-)
通常のソケットを使用する場合は、次のいずれかを実行できます。
socket_select()
データが利用可能になるのを待つために使用し、その後に適切な大きさのsocket_read()
socket_set_nonblock()
ソケットのブロックを解除し、そこからの読み取りを試みるために使用します