首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我的UDP拨号不也在听?

为什么我的UDP拨号不也在听?
EN

Stack Overflow用户
提问于 2014-11-28 00:15:26
回答 1查看 386关注 0票数 0

我有两个节目,一个听众和一个拨号器。我想要一个双向街道的UDP通信在同一个端口。我的侦听器按预期读取从拨号程序发送的数据报,然后发送回自己的5个数据报。唯一的问题是,我的拨号器没有看。

我尝试使用net.DialUDP,但是当我使用它时,从拨号程序发送0个数据报。

倾听者-很棒

代码语言:javascript
复制
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 := 0

b := make([]byte, 10)
conn.ReadFromUDP(b)
fmt.Println(string(b[:]))
for i < 5 {

    conn.WriteToUDP([]byte("sending back"), &addr)
    i++
}
}

发送数据报但无法读取数据报的拨号程序

代码语言:javascript
复制
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[:]))
}

不发送任何数据报的拨号程序

代码语言:javascript
复制
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[:]))

}
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-28 02:24:55

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

代码语言:javascript
复制
sock, _ := net.Dial("udp", "127.0.0.1:7000")

这将创建一个net.Conn,它只是一个基本的连接接口。您必须将其断言为*net.UDPConn,才能使实际的UDP方法正常工作。

代码语言:javascript
复制
sock, _ := net.DialUDP("udp", nil, remote)

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27180293

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档