socket_create
ソケット(通信時の終端)を作成する
説明
Socketfalse socket_create(int $domain
, int $type
, int $protocol
)
パラメータ
-
domain
-
パラメータ domain
には、
ソケットが利用するプロトコルファミリーを指定します。
指定可能なアドレス/プロトコルファミリーの一覧
ドメイン |
説明 |
AF_INET |
IPv4 インターネットプロトコル。
このプロトコルファミリーに属するプロトコルとしてよく知られているのは、
TCP や UDP です。
|
AF_INET6 |
IPv6 インターネットプロトコル。TCP と UDP
が、このプロトコルファミリーで一般的なプロトコルです。
|
AF_UNIX |
ローカルでのコミュニケーションに用いられるプロトコルファミリーです。
高い効率と低いオーバーヘッドを誇るため、IPC (プロセス間通信)
でよく使われます。
|
-
type
-
type
パラメータは、
ソケットが利用する通信方式を指定します。
利用できるソケットのタイプ
タイプ |
説明 |
SOCK_STREAM |
このタイプでは、時系列的、高信頼性、全二重、接続型のバイトストリームが利用できます。
帯域外のデータ転送メカニズムがサポートされている場合もあります。
TCP プロトコルは、このソケットタイプに基づきます。
|
SOCK_DGRAM |
このタイプでは、データグラム(非接続型で、信頼性の高くない
固定バイト長のメッセージ) がサポートされます。
UDP プロトコルは、このソケットタイプに基づきます。
|
SOCK_SEQPACKET |
このタイプでは、時系列的な、信頼性のある、
双方向の接続指向型の固定長データグラム転送が利用できます。
パケットを消費する側は、一つのパケット全部を一度の
read コールで読み込む必要があります。
|
SOCK_RAW |
このタイプでは、素のネットワークプロトコルを操作できます。
この特殊なソケットを使って、どのタイプのプロトコルでもユーザーの手で構築することができます。
よくある使い方として、(ping のような) ICMP リクエストの作成があります。
|
SOCK_RDM |
このタイプでは、信頼に足る、非時系列的なデータグラム転送が利用できます。
ほとんどのオペレーティングシステムでは実装されていないでしょう。
|
-
protocol
-
protocol
は、ソケット上の通信で使われる
domain
で指定されたファミリーに属するプロトコルを指定します。
正しい値は、getprotobyname
を使うことで取得できます。利用したいプロトコルが、TCP または UDP
の場合は、定数 SOL_TCP
と
SOL_UDP
を指定することもできます。
一般的なプロトコルの一覧
名称 |
説明 |
icmp |
Internet Control Message Protocol は、主にゲートウェイやホストが、
データグラム通信におけるエラーを報告するのに使われます。
"ping" コマンド (最近のほとんどのオペーレーティングシステムに
搭載されています) が ICMP アプリケーションの一例です。
|
udp |
User Datagram Protocol は、非接続指向の、信頼性の高くない、
固定のレコード長を用いるプロトコルです。このような側面のおかげで、
UDP はプロトコルとして最小限のオーバーへッドしか要求しません。
|
tcp |
Transmission Control Protocol は、信頼性の高い、接続指向かつ
ストリーム指向の全二重通信プロトコルです。TCP は、
すべてのパケットが、送信された順序で(時系列的に)受信されることを
保証します。もし、何らかの理由でパケットが通信中に失われた場合、
TCP では、送信先から通知があるまで、パケットが再送信されるように
なっています。信頼性とパフォーマンス上の理由から、TCP の実装は、
下層にあるデータグラム通信レイヤーのオクテット幅を
適当な長さに決定します。このため、TCP アプリケーションは、
レコードの全部が一度に転送されない場合も考慮しなければなりません。
|
戻り値
socket_create は、
成功時に Socket クラスのインスタンス、
失敗時に false
を返します。
実際のエラーコードは、socket_last_error を
コールすることにより取得できます。このエラーコードをさらに
socket_strerrorに渡すことにより、
エラーの内容を文字列で取得することが可能です。
エラー / 例外
domain
や type
に
不正な値が与えられた場合、socket_create は、これらを
それぞれ AF_INET
と SOCK_STREAM
であるとみなし、E_WARNING
メッセージを出します。
参考
- socket_accept
- socket_bind
- socket_connect
- socket_listen
- socket_last_error
- socket_strerror