我正在嘗試將進程從 Windows 移植到 WSL/Linux。在此之前,成功發現 SSDP 後,兩個 Windows 進程透過 TCP 連線進行通訊。現在,我希望從 Windows 到 Linux (WSL) 也能進行類似的通訊。我一直在 Windows<->Windows 情況下使用 localhost/127.0.0.1 ,但 SSDP 發現似乎只適用於 Windows<->WSL 的 WSL 實例 IP。
如果配置在 WSL 中給出:
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.26.253.18 netmask 255.255.240.0 broadcast 172.26.255.255
inet6 fe80::215:5dff:fed7:82b prefixlen 64 scopeid 0x20<link>
ether 00:15:5d:d7:08:2b txqueuelen 1000 (Ethernet)
RX packets 422 bytes 72257 (72.2 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 299 bytes 27676 (27.6 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 378 bytes 19949 (19.9 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 378 bytes 19949 (19.9 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
當我在 Windows 和 WSL 中運行其他進程時,SSDP 發現適用於 172.26.253.18。
我能想到的可能原因是當我們在WSL中使用127.0.0.1時,它指的是WSL環境本身的環回介面。傳送至 127.0.0.1 的 SSDP 封包保留在 WSL 環境中,對主機 Windows 環境或本機網路上的其他裝置不可見。