最近要做一個向局域網內的所有設備廣播發送信息,並接受設備的回復信息,回復信息包括設備的版本號,IP地址,運行工程名等信息。發現一個局域網內是可以有不同的網段的,但UDP廣播只能是同一個網段的廣播。又發現一台電腦是可以設置多個IP,且IP地址可以是不同網段的。故目前只要往當前電腦上的所有本地IP地址進行廣播,就可以讓不同網段的設備接收到廣播信息了。獲取代碼如下:
package main
import(
"fmt"
"net"
)
func main(){
addrs, err := net.InterfaceAddrs()
if err != nil{
fmt.Println(err)
return
}
for _, value := range addrs{
if ipnet, ok := value.(*net.IPNet); ok && !ipnet.IP.IsLoopback(){
if ipnet.IP.To4() != nil{
fmt.Println(ipnet.IP.String())
}
}
}
}
