1

私はphp(socketsever.php)で非常に基本的なソケットサーバーを作成しました。nohupを使用してバックグラウンドで実行します。他のページのsocketserver.phpで作成されたソケットリソースを使用したい。したがって、誰かがページを表示すると、サーバーはソケットを介して何かを送信します。他のページのsocketserverでソケットリソースを使用する方法が見つかりません。

4

1 に答える 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 に答える