Rebol 2端口绑定到多个IP

时间:2016-01-13 23:31:49

标签: rebol rebol3 rebol2

我有一个带有多个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时,上述修改的所有变体(包括交换Port2TestPort2Test的IP值)都会失败。 : - (

我确定我有一些东西可以忽略,但我无法找到任何关于如何在将端口绑定到特定接口时初始化端口的提示。

任何提示都非常感谢!


修改 Rebol绑定到接口的方式现在对我很明显 - 但如何修改它仍然是一个谜。

假设我有两个与一个网卡关联的IP(==接口):10.100.1.1和10.100.1.2。 在10.100.1.1:80我设置了一个Tomcat应用程序,我知道它可以绑定到该特定接口。 然后我启动一个REBOL应用程序,它也声称端口80。 它们都会愉快地运行,并且每个都只能在一个IP上访问,就像Rebol应用程序绑定到10.100.1.2一样。 然后我关闭Tomcat应用程序,并尝试启动它。事实证明这是不可能的,因为界面正在使用中。 如果我访问这两个IP,那么可以在两个IP上访问Rebol应用程序。

Rebol在这里工作并不是一个活跃的机制,但是因为Rebol声称0.0.0.0接口(在服务器的上下文中,0.0.0.0表示“本地机器上的所有IPv4地址”),这被转换为任何当前可用的接口,以及接口可用时的延迟声明。

在端口的创建时间找到如何将Rebols默认接口0.0.0.0更改为其他内容真的很好!

1 个答案:

答案 0 :(得分: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]
    ]]

唉,这是只读的......(文档说不可设置)。

如果对您有任何帮助,您可以找到所有端口模式here的列表。