4

複数の IP を持つ Windows セットアップがあり、Rebol スクリプト (Rebol/Core 2.78 上) が個々のバインドを作成し、それらの IP のそれぞれで同じポート番号をリッスンすることを望みます。

ごく最近まで、これを行うための構文は次のとおりだと思っていました。

Port1Test: open/lines tcp://:80   browse http://10.100.44.6?
Port2Test: open/lines tcp://:80   browse http://10.100.44.7?

しかしPort2Test、その部分が完全に無視されているため、行が失敗していることがわかりましたbrowse http://10.100.44.6?(そして今検索しても、最初にその構文を取得した場所を見つけることさえできません)。
リスニングポートを指定する方法について私が見つけることができるすべてのドキュメントを読むと、次のようになります。

Port1Test: open/lines tcp://:80

Port1Testポートを調べると、ほとんどの設定が に設定されてnoneおり、いくつかは次のように設定されていることがわかります。

scheme: 'tcp
host: none
port-id: 80
local-ip: 0.0.0.0
local-port: 80

そこで、これらの値を次のように変更しようとしました。

Port1Test: open/lines tcp://:80  ; Create port, as before. Then modify below
Port1Test/host: 10.100.44.6      ; Might this be the binding interface?
Port1Test/port-id: 1             ; I guess this is just an id?
Port1Test/local-ip: 10.100.44.6  ; This ought to be the binding interface.

Port2Test: open/lines tcp://:80  ; Create port, as before. Then modify below
Port2Test/host: 10.100.44.7      ; Might this be the binding interface?
Port2Test/port-id: 2             ; I guess this is just an id?
Port2Test/local-ip: 10.100.44.7  ; This ought to be the binding interface.

Port1Test残念ながら、との IP 値を交換するなど、上記の変更のすべてのバリエーションは、 のPort2Test作成時に失敗しますPort2Test。:-(

見落としているものがあると確信していますが、ポートを特定のインターフェイスにバインドしながらポートを初期化する方法についてのヒントはどこにも見つかりません。

どんなヒントでも大歓迎です!


編集: Rebol がインターフェイスにバインドする方法は、今ではかなり明白ですが、それを変更する方法はまだ謎です。

1 つのネットワーク カードに関連付けられた 2 つの IP (== インターフェイス) があるとします: 10.100.1.1 と 10.100.1.2。10.100.1.1:80 で、その特定のインターフェイスにバインドできることがわかっている Tomcat アプリケーションをセットアップしました。次に、同じくポート 80 を要求する REBOL アプリケーションを開始します。どちらも正常に動作し、Rebol アプリケーションが 10.100.1.2 にバインドされているかのように、1 つの IP だけでそれぞれにアクセスできます。次に、Tomcat アプリケーションをシャットダウンし、起動しようとしました。インターフェイスが使用されているため、これは不可能であることが判明しました。両方の IP にアクセスすると、両方の IP で Rebol アプリケーションにアクセスできることがわかります。

ここで機能するのは Rebol のアクティブなメカニズムではありませんが、Rebol は 0.0.0.0 インターフェース (サーバーのコンテキストでは、0.0.0.0 は「ローカル マシン上のすべての IPv4 アドレス」を意味します) を要求しているため、現在利用可能な任意のアドレスに変換されます。インターフェイス、およびインターフェイスが利用可能になったときの延期された要求。

ポートの作成時に、Rebols のデフォルト インターフェイス 0.0.0.0 を別のものに変更する方法を見つけられると本当にうれしいです!

4

1 に答える 1

1

Rebol2 リッスン ポートは、デフォルトで利用可能なすべての IPv4 インターフェイス (0.0.0.0) にバインドされます。残念ながら、私の知る限り、これを変更する方法はありません。

参考までに、Rebol2 はinterfacesポート モードを使用して既存の IPv4 インターフェイスを公開します。

>> p: open tcp://:8000
>> probe get-modes p 'interfaces
[make object! [
        name: "if19"
        addr: 10.27.10.110
        netmask: 255.255.255.252
        broadcast: 10.27.10.111
        dest-addr: none
        flags: [broadcast multicast]
    ] make object! [
        name: "lo0"
        addr: 127.0.0.1
        netmask: 255.0.0.0
        broadcast: none
        dest-addr: none
        flags: [multicast loopback]
    ] make object! [
        name: "if16"
        addr: 192.168.1.4
        netmask: 255.255.255.0
        broadcast: 192.168.1.255
        dest-addr: none
        flags: [broadcast multicast]
    ]]

残念ながら、これは読み取り専用です...(ドキュメントにはnot settableと書かれています)。

すべてのポート モードのリストは、ここで見つけることができます。

于 2016-02-17T16:14:15.023 に答える