Pertanyaan Port Rebol 2 yang mengikat beberapa IP


Saya memiliki pengaturan Windows dengan beberapa IP, dan berharap skrip Rebol saya (pada Rebol / Core 2.78) untuk membuat ikatan individual dan mendengarkan nomor port yang sama pada masing-masing dari IP itu.

Sampai baru-baru ini saya pikir sintaks untuk melakukan ini adalah:

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

Tapi ternyata itu Port2Test baris gagal, karena browse http://10.100.44.6? bagian benar-benar diabaikan (dan sekarang mencari, saya bahkan tidak dapat menemukan di mana saya mendapatkan sintaks itu di tempat pertama).
Membaca dokumentasi yang dapat saya temukan tentang cara menentukan port listening seperti ini:

Port1Test: open/lines tcp://:80

Probing the Port1Test port menunjukkan sebagian besar pengaturan diatur ke none, dan beberapa set sebagai berikut:

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

Jadi saya mencoba untuk memodifikasi nilai-nilai seperti ini:

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.

Sayangnya semua variasi modifikasi di atas, termasuk mengganti nilai IP untuk Port1Test dan Port2Test, gagal saat membuat Port2Test. :-(

Saya yakin ada sesuatu yang saya tinjau, tetapi saya tidak dapat menemukan petunjuk di mana pun tentang cara menginisialisasi port sambil mengikatnya ke antarmuka tertentu.

Setiap petunjuk sangat dihargai!


Edit: Cara Rebol mengikat antarmuka sekarang cukup jelas bagi saya - tetapi cara mengubahnya masih menjadi misteri.

Katakanlah saya memiliki dua IP (== antarmuka) yang terkait dengan satu kartu jaringan: 10.100.1.1 dan 10.100.1.2. Pada 10.100.1.1:80 Saya mengatur aplikasi Tomcat yang saya tahu dapat mengikat ke antarmuka khusus itu. Lalu saya memulai aplikasi REBOL, yang juga mengklaim port 80. Mereka berdua akan berjalan dengan gembira, dan masing-masing dapat diakses hanya pada satu IP, seolah-olah aplikasi Rebol terikat pada 10.100.1.2. Lalu saya mematikan aplikasi Tomcat, dan mencoba untuk memulainya. Ini ternyata tidak mungkin, karena antarmuka sedang digunakan. Dan jika saya mengakses kedua IP itu, ternyata aplikasi Rebol dapat diakses di kedua IP.

Ini bukan mekanisme aktif dalam Rebol yang bekerja di sini, tetapi karena Rebol mengklaim antarmuka 0.0.0.0 (Dalam konteks server, 0.0.0.0 berarti "semua alamat IPv4 pada mesin lokal"), yang diterjemahkan ke setiap saat ini tersedia antarmuka, dan klaim yang ditangguhkan ke antarmuka saat tersedia.

Akan sangat menyenangkan untuk mengetahui cara mengubah antarmuka standar Rebols 0.0.0.0 menjadi sesuatu yang lain pada saat membuat port!


4
2018-01-13 23:31


asal


Jawaban:


Rebol2 mendengarkan port yang terikat secara default ke semua antarmuka IPv4 yang tersedia (0.0.0.0), dan sejauh pengetahuan saya, sayangnya, tidak ada cara untuk mengubahnya.

FYI, Rebol2 mengekspos antarmuka IPv4 yang ada menggunakan interfaces mode port:

>> 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]
    ]]

Sayangnya, ini hanya-baca ... (dokumentasi mengatakan tidak tenang).

Anda dapat menemukan daftar semua mode port sini, jika ada bantuan untuk Anda.


1
2018-02-17 16:14