Golang同时发送和接收udp数据包

我有一个小问题。 我想使用DialUDP函数接收和写入udp数据包。 问题在于它只能写入而不接收udp数据包(我认为)。 我如何发送数据包并让程序等待服务器的响应?</ p>

我的代码:</ p>

 如果programPacketType ==  “ udp” {
服务器,错误:= net.ResolveUDPAddr(“ udp4”,programAddressInput)
checkError(err)
lServer,错误:= net.ResolveUDPAddr(“ udp4”,programLocalAddressInput)
checkError(err)

conn,错误:= net.DialUDP(“ udp4”,服务器,lServer)
checkError(err)

i:= 0
for {
msg:= strconv.Itoa(i )
i ++
buf:= [] byte(msg)
_,err:= conn.Write(buf)
if err!= nil {
fmt.Println(msg,err)
} \ n fmt.Println(“ send:”,i,“到连接的服务器”)
time.Sleep(time.Second * 1)
}
}
</ code> </ pre>

谢谢。</ p>

(请忽略语法错误)</ p>
</ div>

展开原文

原文

I have a little problem. I want to receive and write udp packets with a DialUDP function. The problem is that it only can write and not receive udp packets (i think). How can i send a packet and let the program wait on a respond from the server?

my code:

if programPacketType == "udp"{
    server,err := net.ResolveUDPAddr("udp4", programAddressInput)
    checkError(err)
    lServer, err := net.ResolveUDPAddr("udp4", programLocalAddressInput)
    checkError(err)


    conn, err := net.DialUDP("udp4", server, lServer)
    checkError(err)

    i := 0
    for {
        msg := strconv.Itoa(i)
        i++
        buf := []byte(msg)
        _,err := conn.Write(buf)
        if err != nil {
            fmt.Println(msg, err)
        }
        fmt.Println("sended:", i, "to connected server")
        time.Sleep(time.Second * 1)
    }
}

thanks.

(Pls ignore grammatical mistakes,)

udp
dqfaom241360
dqfaom241360 抱歉,我已经读过一遍,但仍然听不懂。如果要发送数据包然后等待答复,则需要在发送数据包之后(或同时)从连接中读取数据,但尚未完成。您是否尝试过使用conn.Read,如果是,您尝试了什么而没有用?
大约 2 年之前 回复
dtdfl62844
dtdfl62844 此代码确实没有收到。但这不是问题,请再次阅读我的问题。
大约 2 年之前 回复
duansai1314
duansai1314 为什么您认为您无法接收数据包?(此代码根本不会尝试接收)
大约 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐