Windows から WSL/Linux にプロセスを移植しようとしています。以前は、2 つの Windows プロセスが、SSDP 検出が成功した後、TCP 接続を介して通信していました。今度は、Windows から Linux (WSL) への同様の通信を機能させたいと思っています。Windows<->Windows の場合、localhost/127.0.0.1 を使用していましたが、SSDP 検出は Windows<->WSL の WSL インスタンス IP でのみ機能するようです。
ifconfigWSL では次のようになります:
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 環境やローカル ネットワーク上の他のデバイスには表示されません。