socket_bind

(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)

socket_bindソケットに名前をバインドする

説明

socket_bind(Socket $socket, string $address, int $port = 0): bool

address で指定した名前を socket で指定したソケットにバインドします。 これは、socket_connect() あるいは socket_listen() を使用して接続が確立される前に行われます。

パラメータ

socket

socket_create() で作成した Socket クラスのインスタンス。

address

ソケットの種類が AF_INET の場合、 address はドットで 4 つに区切られた表記 (例: 127.0.0.1)の IP アドレス。

ソケットの種類が AF_UNIX の場合、 address は Unix ドメインソケット (例: /tmp/my.sock)。

port(オプション)

パラメータ portAF_INET ソケットにバインドする場合にのみ使用され、 接続するリモートホストのポートを指定します。

戻り値

成功した場合に true を、失敗した場合に false を返します。

エラーコードは socket_last_error() により取得できます。 このコードを socket_strerror() に渡すことにより、 エラー内容を表すテキストを得ることができます。

変更履歴

バージョン 説明
8.0.0 socket は、Socket クラスのインスタンスになりました。 これより前のバージョンでは、リソース型でした。

例1 socket_bind() を使用してソースアドレスを指定する

<?php
// 新しいソケットを作成する
$sock socket_create(AF_INETSOCK_STREAMSOL_TCP);

// コンピュータが所有する IP アドレスリストの例
$sourceips['kevin']    = '127.0.0.1';
$sourceips['madcoder'] = '127.0.0.2';

// ソースアドレスをバインドする
socket_bind($sock$sourceips['madcoder']);

// 接続先アドレスと接続する
socket_connect($sock'127.0.0.1'80);

// 書き込む
$request 'GET / HTTP/1.1' "\r\n" .
           
'Host: example.com' "\r\n\r\n";
socket_write($sock$request);

// 閉じる
socket_close($sock);

?>

注意

注意:

この関数は、 socket_connect() の前に実行されている必要があります。

注意:

Windows 9x/ME 互換性の注意: マシンに属しないアドレスにソケットをバインドしようとした場合、 socket_last_error() は 無効なエラーコードを返すことがあります。

参考

関連キーワード:  ソケット, 名前, 注意, bind, 接続, listen, アドレス, エラー, Socket, インスタンス