0

我正在开发一个界面来显示哪些 VNC-web 站处于活动状态并提供指向该 Web 界面的链接。

示例:站 1 是:端口 5800 上的http://192.168.1.1

如果我在本地网络上运行它,它工作正常,因为所有计算机都在该本地网络上,我需要的是一种从外部 IP 进行这项工作的方法。

无论如何将会话重定向到一个框架或使其保持本地的东西?

这是我做的一个测试,它在本地网络上运行良好,远程它只能在中途运行:

$station1 = @fsockopen("192.168.1.1", 5800);

if ($station1) {
    echo "<a href='http://192.168.1.1:5800'>Station 1 active.</a>";
    echo "<br />";
        fclose($station1);
    } else {
        echo "Station 1 is inactive.";
    echo "<br />";
    }

'fsockopen' 返回 TRUE,因为它是在“服务器端”执行的,但单击生成的链接会失败,因为它是在“客户端”(例如浏览器)上执行的

有什么办法可以解决这个问题?有任何想法吗?

4

3 回答 3

1

您必须在路由器中设置端口转发,并让 VNC 在每台机器上的不同端口上运行。将端口号映射到内部 IP 可能是最明智的,例如:

 Port 5801 -> 192.168.1.1
 Port 5802 -> 192.168.1.2
 Port 5803 -> 192.168.1.3
 etc.

如果您随后从外部调用该页面(例如使用动态 IP),您必须从 PHP 中找出您的动态 IP(参见例如此处了解如何执行此操作),然后链接到每个端口。

<a href="123.123.123.123:5801">Station 1 active.</a>
<a href="123.123.123.123:5802">Station 2 active.</a>
<a href="123.123.123.123:5803">Station 3 active.</a>

如果不将 VNC 映射到不同的端口,就无法做到这一点。对于外部 IP,只存在一个 IP 地址。LAN 的内部 IP 没有意义,并且外部呼叫者无法访问。

于 2011-04-08T07:02:42.643 回答
0

尝试使用此代码进行测试,(您会收到一个错误,告诉您出了什么问题):还使用 WAN ip 从网络内部访问您的 WAN ip 以连接到互联网无法使用普通路由器完成,您必须确定其本地网络或然后 WAN 网络相应地更改 ip(加上将所有 WAN 流量路由到服务器)。

    <?php
if(substr($_SERVER['SERVER_ADDR'], -3)=="1.1"){$server=$_SERVER['SERVER_ADDR'];}else{$server='123.123.YOUR.WAN123.123'}
    $fp = fsockopen($server, 5800, $errno, $errstr);
    if (!$fp) {
        echo "ERROR: $errno - $errstr<br />\n";
    } else {
        echo "<a href='http://'.$server.':5800'>Station 1 active.</a>";
        fclose($fp);
    }
    ?> 
于 2011-04-08T02:24:53.370 回答
0

您也许可以对http://www.whatismyip.com/进行网络调用并抓取外部 IP 地址,然后使用它......但是只有当网络服务器是您正在查询的服务器时才有效。如果不是,它会变得棘手......并且根据路由它可能会变得非常棘手......所以如果每个内部 IP 都有不同的外部 IP,那么它可能会工作,但如果不是,那么你必须控制请求的获取方式路由...

所以说你有

192.168.1.1

192.168.1.2

192.168.1.3

并且它们连接到您的家庭无线路由器,该路由器连接到互联网....通过说您的电缆调制解调器,那么所有 3 个对于您网络之外的人都将具有相同的 IP,实际上很可能您的路由器不允许人们回拨到您的网络。您必须将路由器配置为将请求转发到各个端口以转到特定的内部 IP 地址。

所以在不知道这个路由是如何设置的情况下回答这个问题是非常困难的

于 2011-04-08T02:26:13.927 回答