【PHP8.x】stream_socket_get_name関数の使い方

作成日: 更新日:

stream_socket_get_name関数は、PHPで確立されたネットワーク接続(ソケットストリーム)に関する情報を取得する関数です。この関数を使用することで、プログラムが現在やり取りしている相手のIPアドレスとポート番号、あるいは自身が使用しているIPアドレスとポート番号を確認できます。

具体的には、第一引数にstream_socket_clientstream_socket_serverなどの関数で作成されたソケットストリームのリソースを指定します。第二引数には真偽値trueまたはfalseを設定します。trueを指定すると接続相手である「リモート側」のIPアドレスとポート番号が取得され、falseを指定すると自身である「ローカル側」のIPアドレスとポート番号が取得されます。

成功した場合、この関数は「IPアドレス:ポート番号」という形式の文字列を返します。たとえば、「192.168.1.100:8080」のような形式で情報が提供されます。もし何らかの理由で情報が取得できなかったり、エラーが発生したりした場合にはfalseが返されます。

この関数は、ネットワークアプリケーションのデバッグ時や、接続に関するログを記録したい場合、または接続しているクライアントやサーバーの情報をプログラム内で識別する必要がある場合に非常に便利です。ネットワーク通信の詳細を把握するために利用されます。

基本的な使い方

構文(syntax)

<?php
$socket = stream_socket_server("tcp://127.0.0.1:0", $errno, $errstr);
if (!$socket) {
    echo "$errstr ($errno)\n";
} else {
    $name = stream_socket_get_name($socket, false);
    echo "Socket name: " . $name . "\n";
    fclose($socket);
}
?>

引数(parameters)

resource $socket, bool $remote

  • resource $socket: 名前を取得したいソケットリソースを指定します。
  • bool $remote: trueを指定するとリモートアドレス(接続先)、falseを指定するとローカルアドレス(接続元)の名前を取得します。

戻り値(return)

string|false

指定されたストリームソケットに関連付けられたローカルまたはリモートの名前(IPアドレスとポート番号)を文字列で返します。失敗した場合はfalseを返します。

【PHP8.x】stream_socket_get_name関数の使い方 | いっしー@Webエンジニア