我无法从Win 10上的Go发送多播请求到LAN。
我有Windows 10 1909。
我正在使用过滤器host 239.255.255.250 or host 172.19.21.116 or port 1982
运行wireshark,其中.116
是我要寻找的设备的IP。
我已安装YeeLight UWP app
我有此代码(每if err != nil
]被删除):
package main
import (
"bytes"
"net"
"time"
)
func main() {
bulbMulticastAddr := &net.UDPAddr{IP: net.IPv4(239, 255, 255, 250), Port: 1982}
bulbSearchRequest := new(bytes.Buffer)
_, err := bulbSearchRequest.WriteString("M-SEARCH * HTTP/1.1\r\nHOST:239.255.255.250:1982\r\nMAN:\"ssdp:discover\"\r\nST:wifi_bulb\r\n")
conn, err := net.ListenUDP("udp4", bulbMulticastAddr)
conn.WriteTo(bulbSearchRequest.Bytes(), bulbMulticastAddr)
time.Sleep(time.Duration(6) * time.Second)
}
[当我运行go run myapp
时,在WireShark中,我看到带有源127.0.0.1
和目标239.255.255.250
的单个UDP数据包
[当我运行Yeelight UWP应用时,在WireShark中,我在WireShark中看到两个相同的数据包:一个使用以太网接口,另一个使用环回。
并且一段时间后,操作系统开始工作(几个小时-不同的应用程序正在运行,它开始工作。
我使用时
iflist, _ := net.Interfaces() // iflist[0] is Ethernet
conn, err := net.ListenMulticastUDP("udp4", &iflist[0], bulbMulticastAddr)
conn.WriteTo(bulbSearchRequest.Bytes(), bulbMulticastAddr)
一切正常
我做错了什么?每个有关多播的教程都表明我的工作方式是正确的,但是它并没有按预期运行。我缺少什么?
为什么ListenUDP()不能按预期工作?
go version go1.14 windows/amd64
我无法从Win10上的Go发送多播请求到LAN。我有Windows 101909。我正在运行带有过滤器主机239.255.255.250或主机172.19.21.116或端口1982的wirehark,其中.116是IP的...
似乎go1.14.1解决了此问题。但更改日志中没有任何内容。