我在 php(socketsever.php) 中编写了一个非常基本的套接字服务器。我使用 nohup 让它在后台运行。我想在其他页面中使用在 socketserver.php 中创建的套接字资源。所以当有人查看某个页面时,Server 会通过 socket 发送一些东西。我在其他页面中找不到在 socketserver 中使用套接字资源的方法。
问问题
724 次
1 回答
1
我相信您正在寻找的是 SO_REUSEADDR。这将允许多个连接到 php 脚本正在侦听的端口。您可以通过在执行 socket_create 之后简单地设置此套接字选项来做到这一点。
<?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 回答