私はphp(socketsever.php)で非常に基本的なソケットサーバーを作成しました。nohupを使用してバックグラウンドで実行します。他のページのsocketserver.phpで作成されたソケットリソースを使用したい。したがって、誰かがページを表示すると、サーバーはソケットを介して何かを送信します。他のページのsocketserverでソケットリソースを使用する方法が見つかりません。
質問する
724 次
1 に答える
1
あなたが探しているのはSO_REUSEADDRだと思います。これにより、phpスクリプトがリッスンしているポートへの複数の接続が可能になります。これを行うには、socket_createを実行した後にこのソケットオプションを設定するだけです。
php.netからの例
<?php
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if (!is_resource($socket)) {
echo 'Unable to create socket: '. socket_strerror(socket_last_error()) . PHP_EOL;
}
if (!socket_set_option($socket, SOL_SOCKET, SO_REUSEADDR, 1)) {
echo 'Unable to set option on socket: '. socket_strerror(socket_last_error()) . PHP_EOL;
}
if (!socket_bind($socket, '127.0.0.1', 1223)) {
echo 'Unable to bind socket: '. socket_strerror(socket_last_error()) . PHP_EOL;
}
$rval = socket_get_option($socket, SOL_SOCKET, SO_REUSEADDR);
if ($rval === false) {
echo 'Unable to get socket option: '. socket_strerror(socket_last_error()) . PHP_EOL;
} else if ($rval !== 0) {
echo 'SO_REUSEADDR is set on socket !' . PHP_EOL;
}
?>
于 2013-02-08T03:27:28.050 に答える