Golang Go语言中竟然不能直接发送 UDP 包
TCP 用 dial 可以理解,我只是想单纯的发送一个 UDP 包 为什么也要用 net.DialUDP() 。
反观 python ,一个 sendto() 简单明了。
第一次对 golang 有些失望。
Golang Go语言中竟然不能直接发送 UDP 包
信不信会有 go 粉开 1 万个 gorountine 嘲讽你……
1 万个哪里够,要百万并发嘲讽(
调用 DialUDP 是为了在本地打开一个 UDP 端口,这样才能开始 UDP 通讯。
叫 Dial 只是习惯吧。
你是凯蒂吗
google 搜 golang udp 第一个就是例子,你是蠢还是懒?
不多说,自己去试试就知道了。不了解情况就嘲讽是真的无知。
因为这是个接口
go<br>func main() {<br> conn,err :=net.Dial("udp","127.0.0.1:9897")<br> if err != nil {<br> log.Fatal(err)<br> }<br> defer conn.Close()<br> conn.Write([]byte(""))<br> data := make([]byte, 1024)<br> n,err:=conn.Read(data)<br> if err != nil {<br> log.Fatal(err)<br> }<br> fmt.Println(string(data[:n]))<br>}<br>
刚学 go ,试了一下可以的
楼主要的是先 bind 再 recv/sendto
不是说吹捧 Go 但这个黑实在好低级。。。自己写个 func sendto() 不就结了吗。。被语言惯坏了?
另外没怎么用过 Python 但是官网也是要先创建对象才能 sendto : https://wiki.python.org/moin/UdpCommunication 所以你说的 “一个 sendto() 简单明了。 ” 在我看来说难听点叫如同放屁。。。。
我竟然他妈的还这么耐心地对比了???
在Golang(Go语言)中,虽然标准库没有直接提供一个类似于TCP那样高级的封装来发送UDP包,但确实提供了底层接口来操作UDP。通过net
包中的net.UDPConn
类型,开发者可以很方便地发送和接收UDP数据包。
以下是一个简单的示例,展示了如何在Go中发送UDP包:
package main
import (
"fmt"
"net"
)
func main() {
// 目标地址和端口
addr := net.UDPAddr{
Port: 12345,
IP: net.ParseIP("127.0.0.1"),
}
// 建立UDP连接
conn, err := net.DialUDP("udp", nil, &addr)
if err != nil {
fmt.Println("Error:", err)
return
}
defer conn.Close()
// 要发送的数据
message := []byte("Hello, UDP!")
// 发送数据
_, err = conn.Write(message)
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Println("Message sent successfully")
}
在这个例子中,我们首先定义了一个UDP地址(包括IP和端口),然后通过net.DialUDP
函数建立了一个UDP连接。接着,我们使用conn.Write
方法发送了数据。这个过程相对直接,但需要手动管理连接和地址等细节。
因此,虽然Go语言没有为UDP提供像TCP那样的高级封装,但通过net.UDPConn
和相关的函数,我们仍然能够高效地发送和接收UDP数据包。