PHPの socket_create_listen と socket_create 関数について
現在PHPのソケットについて勉強中。
調べていてわかったことをメモっておく。間違っている可能性あり。
phpでソケット通信をする際の受け側で使用する場合は2パターンある。
1.socket_create_listenを使用する
2.socket_create, socket_bind, socket_listenを用いる
(socket_accept以降は共通なので省く)
簡単に説明すると
1.簡単にlisten状態にできるがすべてのインタフェースでlisten状態になる。
2.接続を受けれるインタフェースを指定できたりTCP/UDP、IPV4/IPV6等の指定ができる
1のサンプルコード
$port = 9999;
$sock = socket_create_listen($port);
if(!$sock){
echo 'ERROR_CREATE_LISTEN';exit;
}$newSock = socket_accept($sock);
2のサンプルコード
$port = 9999;
//ソケットの生成
$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);//バインド
if(!socket_bind($sock, '192.168.56.101', $port)){
echo 'ERROR_BIND';
exit;
}
//待ち受け可能状態
if(!socket_listen($sock)){
echo 'ERROR_LISTEN';
exit;
}$newSock = socket_accept($sock);
2のsocket_createでIPやらTCPを指定しsocket_bindでインタフェースを指定できる
1の実行結果(netstat)
tcp 0 0 0.0.0.0:9999 0.0.0.0:* LISTEN
2の実行結果(netstat)
tcp 0 0 192.168.56.101:9999 0.0.0.0:* LISTEN