我正在尝试将进程从 Windows 移植到 WSL/Linux。之前,两个 Windows 进程在成功发现 SSDP 后通过 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 环境或本地网络上的其他设备不可见。