0

どの VNC Web ステーションがアクティブであるかを表示し、その Web インターフェイスへのリンクを提供するインターフェイスを開発しています。

例: ステーション 1: http://192.168.1.1、ポート 5800

これをローカル ネットワークで実行すると、正常に動作します。すべてのコンピューターがそのローカル ネットワーク上にあるため、外部 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 には、1 つの 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/への Web 呼び出しを行い、外部 IP アドレスをスクレイピングしてそれを使用することもできますが、それは Web サーバーがクエリ対象のサーバーである場合にのみ機能します。そうでない場合はトリッキーになります...そしてルーティングによっては本当にトリッキーになる可能性があります...したがって、各内部IPに異なる外部IPがある場合は問題ないかもしれませんが、そうでない場合はリクエストの取得方法を制御する必要がありますルーティングされた...

だからあなたが持っていると言う

192.168.1.1

192.168.1.2

192.168.1.3

そして、それらはインターネットに接続されている自宅のワイヤレスルーターに接続されています....たとえばケーブルモデムを介して、3つすべてがネットワーク外の人々に対して同じIPを持ち、実際にはルーターが人々に許可しない可能性がありますネットワークにコールバックします。特定の内部 IP アドレスにアクセスするには、さまざまなポートに要求を転送するようにルーターを構成する必要があります。

したがって、このルーティングがどのように設定されているかを知らなければ、この質問に答えるのは非常に困難です

于 2011-04-08T02:26:13.927 に答える