为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我的 UDP 拨号器也没有监听?

为什么我的 UDP 拨号器也没有监听?

Go
MMTTMM 2021-09-09 13:43:03
我有两个程序,一个监听器和一个拨号器。我想要在同一个端口上进行双向 UDP 通信。我的监听器按预期读取从拨号器发送的数据报,然后发回自己的 5 个数据报。唯一的问题是,我的拨号器没有读取它。我尝试使用 net.DialUDP 但当我使用它时,从拨号器发送了 0 个数据报。听众 - 效果很好func main() {addr := net.UDPAddr{    Port: 7000,    IP:   net.ParseIP("127.0.0.1"),}conn, err := net.ListenUDP("udp", &addr)defer conn.Close()if err != nil {    panic(err)}i := 0b := make([]byte, 10)conn.ReadFromUDP(b)fmt.Println(string(b[:]))for i < 5 {    conn.WriteToUDP([]byte("sending back"), &addr)    i++}}发送数据报但无法读取它们的拨号程序func main() {sock, _ := net.Dial("udp", "127.0.0.1:7000")buf := make([]byte, 100)_, werr := sock.Write([]byte("first send"))if werr != nil {    fmt.Println(werr)}sock.Read(buf)fmt.Println(string(buf[:]))}不发送任何数据报的拨号程序func main() {remote, _ := net.ResolveUDPAddr("udp", "127.0.0.1:7000")sock, _ := net.DialUDP("udp", nil, remote)buf := make([]byte, 10)for {    sock.WriteToUDP([]byte("first send"), remote)    sock.ReadFromUDP(buf)    fmt.Println(string(buf[:]))}}
查看完整描述

1 回答

?
qq_笑_17

TA贡献1818条经验 获得超7个赞

如有疑问,只需使用 ListenUDP。它将发送和接收数据报。

sock, _ := net.Dial("udp", "127.0.0.1:7000")

这将创建一个net.Conn,它只是一个基本的连接接口。您必须将其声明为 a*net.UDPConn才能使实际UDP方法起作用。

sock, _ := net.DialUDP("udp", nil, remote)

这将创建一个“已连接”的 UDP 套接字,并使用裸Write方法发送到单个远程地址。


查看完整回答
反对 回复 2021-09-09
  • 1 回答
  • 0 关注
  • 211 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信