l, _ := net.Listen("tcp", ":0") // listen on localhost
	port := l.Addr().(*net.TCPAddr).Port
	ip := l.Addr().(*net.TCPAddr).IP
	fmt.Println(ip, port)

	ifaces, _ := net.Interfaces()
	// handle err
	for _, i := range ifaces {

		addrs, _ := i.Addrs()
		// handle err
		for _, addr := range addrs {			switch v := addr.(type) {
			case *net.IPAddr:
				fmt.Println(v.IP)
			}

		}
	}