1

我在 php(socketsever.php) 中编写了一个非常基本的套接字服务器。我使用 nohup 让它在后台运行。我想在其他页面中使用在 socketserver.php 中创建的套接字资源。所以当有人查看某个页面时,Server 会通过 socket 发送一些东西。我在其他页面中找不到在 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 回答