ソケット拡張により、ソケット通信関数への低レベルなインターフェース が実装され、クライアントとしてだけでなく、ソケットサーバーとして動 作することが可能となります。
より一般的なクライアントサイドのソケットインターフェースについては、 fsockopen() および pfsockopen() を参照下さい。
ここで説明するソケット関数を使用する場合、多くの関数は、C言語に同 じ名前の関数が存在しますが、定義が異なっていることに注意して下さい。 混乱を避けるには、説明をよく読んで下さい。
このようにソケットソケットプログラミングと異なっている点はあります が、それでも有用な多くのUNIX man ページを参照することができます。 Web上にC言語のソケットプログラミングのチュートリアル情報が存在し、 その多くは、若干の修正により、PHPにおけるソケットプログラミングに 適当することが可能です。 UNIX Socket FAQ が、手始めと して適しているでしょう。
このモジュールは、 実験的 なものです。これは、これらの関数の動作、関数名は、このドキュメントに書かれて事項と同様に告知なく将来的なPHPのリリースで変更される可能性があります。注意を喚起するとともに、このモジュールは使用者のリスクで使用して下さい。
これらの関数は、標準モジュールの一部と して利用可能であり、常に使用できます。
ここに既述されたソケット関数はPHP拡張モジュールの一部であり、コン パイル時に configure にオプション --enable-sockets を指定することにより使用 可能となります。
この拡張モジュールは設定ディレクティブを全く 定義しません。
この拡張モジュールはリソース型を全く定義し ません。
これらの定数は、この拡張モジュールで定義されており、 この拡張モジュールがPHP内部にコンパイルされているか実行時に動的にロー ドされるかのどちらかの場合のみ使用可能です。
ソケット拡張モジュールは、強力なBSDソケットへの有用なインターフェ イスを提供するために作成されました。 関数は、Win32およびUNIXの実装において等しく動作するように注意が払 われています。ソケット関数の多くは特定の条件で失敗し、エラーを記 述する E_WARNING メッセージを出力します。 これは、時々開発者が望まない時に発生することがあります。例えば、 関数 socket_read() は突然 E_WARNING メッセージを出力する可能性がありま す。これは、予測しない接続断が発生したためです。 @ 演算子により警告出力を抑制し、 socket_last_error() 関数によりアプリケーション 内でエラーコードを取得することが一般に行われています。 エラーを記述する文字列を取得するためにこのエラーコードを指定して socket_strerror() 関数をコールすることが可能で す。詳細は、この関数の説明を参照して下さい。
注意 E_WARNING メッセージは、ソケット拡張モジュー ルにより英語で生成されますが、取得されるエラーメッセージは、カレ ントのロケール( LC_MESSAGES )に依存します。
例 1ソケットの例: 簡易TCP/IPサーバー
この例は、簡単な応答サーバーです。変数 address と port を設定と実行環境に合うように変更して下 さい。このサーバーに次のようなコマンドで接続することが可能です。: telnet 192.168.1.53 10000 (ただし、アドレス とポートは設定に合わせます)入力したものは、サーバー側の出力とな り、エコーバックされます。接続を閉じるには、'quit'を入力します。
例 2ソケットの例: 簡易 TCP/IP クライアント
この例は、簡単な一回限りのHTTPクライアントです。ここでは、あるペー ジに接続し、HEADリクエストを送信し、応答を出力た後、終了します。