Golang不能发送udp广播


本文摘自网络,作者,侵删。


title: "Golang不能发送udp广播"
date: 2021-01-29T20:55:16+08:00
draft: true
tags: ['go','udp']
author: "dadigang"
author_cn: "大地缸"
personal: "http://www.real007.cn"


关于作者

http://www.real007.cn/about

go 不能发送udp广播,这算不算是一个bug?

net.Dial(“udp”, “255.255.255.255:8888”)

win下和centos下都测试了,局域网广播始终没有任何数据返回

附代码

package main

import (
    "fmt"
    "net"
    "time"
)

func main() {
    go func() {
        server, _ := net.ListenPacket("udp", ":8888")
        fmt.Println("server ip:", server.LocalAddr().String(), "  ", server.LocalAddr().Network())
        _buff := make([]byte, 8192)
        for {
            _count, _addr, _ := server.ReadFrom(_buff)
            fmt.Println("upd ip:", _addr.String(), "  ", _addr.Network())
            fmt.Println("package length:", _count)
            fmt.Println("content:", string(_buff[0:_count]))
            _wc, _err_w := server.WriteTo([]byte("ok"), _addr)
            if _err_w != nil {
                panic(_err_w)
            } else {
                fmt.Println("write count:", _wc)
            }
        }
    }()

    time.Sleep(time.Second * 2)

    //_radd, _ := net.ResolveUDPAddr("udp", "127.0.0.1:8888")  更换为这个是单播,结果是正常的
    _radd, _ := net.ResolveUDPAddr("udp", "255.255.255.255:8888")
    _udp, _err_udp := net.DialUDP("udp", nil, _radd)
    if _err_udp != nil {
        panic(_err_udp)
    } else {
        _udp.SetDeadline(time.Now().Add(time.Second * 3))
        _, _err_write := _udp.Write([]byte("test"))
        if _err_write != nil {
            panic(_err_write)
        }
        _buff := make([]byte, 8192)
        _count, _err_read := _udp.Read(_buff)
        if _err_read != nil {
            panic(_err_read)
        }
        fmt.Println("read result:", string(_buff[:_count]))
    }
}

solved


iptables.clear


本文来自:简书

感谢作者:大地缸

查看原文:Golang不能发送udp广播

相关阅读 >>

Golang编程语言能开发啥

聊聊dubbo-Go-proxy的route

ketos 笔记 -- 记 Go hackathon 2017

[系列] - Go-gin-api 路由中间件 - jaeger 链路追踪(六)

手撸Golang 仿spring ioc/aop 之3

Golang如何创建守护进程以及平滑重启

大型迷惑现场之[]*t是什么?*[]t是什么?*[]*t又是什么?

手撸 ssh key管理器

Go语言grpc环境搭建的方法详解

聊聊Gost的generictaskpool

更多相关阅读请进入《Go》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...