go - golang检查udp端口打开

标签 go networking udp

如何检查golang中是否打开了特定的UDP端口?
到目前为止,我尝试了许多方法,但没有人起作用。
准确地说,不管我输入的端口是什么,只要告诉服务器是否响应即可。
方法一


func methodOne(ip string, ports []string) map[string]string {
    // check emqx 1883, 8083 port

    results := make(map[string]string)
    for _, port := range ports {
        address := net.JoinHostPort(ip, port)
        // 3 second timeout
        conn, err := net.DialTimeout("udp", address, 3*time.Second)
        if err != nil {
            results[port] = "failed"
            // todo log handler
        } else {
            if conn != nil {
                results[port] = "success"
                _ = conn.Close()
            } else {
                results[port] = "failed"
            }
        }
    }
    return results
}


方法二

func ping(host string, port string) error {
    address := net.JoinHostPort(host, port)
    conn, err := net.DialTimeout("udp", address, 1*time.Second)
    if conn != nil {
        fmt.Println(conn.LocalAddr())
        defer conn.Close()
    }
    return err
}


方法三
从这个软件包:https://github.com/janosgyerik/portping

portping -c 3 -net udp 0.0.0.0.0 80

最佳答案

除非您确定服务器肯定会发回一些东西,否则您无法 try catch 响应。
检查此链接https://ops.tips/blog/udp-client-and-server-in-go/

关于go - golang检查udp端口打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62608339/

相关文章:

macos - Akka,发送 Udp 失败, "Can' t 分配请求的地址”

java - Spring集成UDP服务器不监听

非阻塞 UDP 写入返回的字节数能否少于请求的字节数?

go - Cobra MarkPersistentFlagRequired 不适用于 Root

go - 如何将地址转换为类型并在 GDB for Golang 中打印它

networking - 当我的笔记本电脑连接到公共(public) WiFi 网络时,其他人是否能够连接到我的笔记本电脑上运行的 Web 服务器?

rest - TCP 打洞是否实用?

linux - 如何以编程方式检查连接?

go - 当结构包含字符串时解码二进制数据

go - 云存储 : unable to upload any content while local with golang