golang 竟然不能直接发送 UDP 包

2017-03-01 13:30:25 +08:00
 nazor
TCP 用 dial 可以理解,我只是想单纯的发送一个 UDP 包 为什么也要用 net.DialUDP() 。
反观 python ,一个 sendto() 简单明了。
第一次对 golang 有些失望。
2183 次点击
所在节点    Go 编程语言
15 条回复
Jaylee
2017-03-01 13:33:04 +08:00
...你是来搞笑的吗?
loading
2017-03-01 13:37:40 +08:00
信不信会有 go 粉开 1 万个 gorountine 嘲讽你……
hjc4869
2017-03-01 13:43:26 +08:00
1 万个哪里够,要百万并发嘲讽(
bianhua
2017-03-01 13:46:48 +08:00
调用 DialUDP 是为了在本地打开一个 UDP 端口,这样才能开始 UDP 通讯。

叫 Dial 只是习惯吧。
kkhaike
2017-03-01 13:48:27 +08:00
你是凯蒂吗
mengzhuo
2017-03-01 13:51:45 +08:00
google 搜 golang udp 第一个就是例子,你是蠢还是懒?
nazor
2017-03-01 14:27:14 +08:00
@mengzhuo
@Jaylee
@kkhaike
不多说,自己去试试就知道了。不了解情况就嘲讽是真的无知。
dozer47528
2017-03-01 14:35:22 +08:00
此时, Java 躲在角落里不敢发声
agtc
2017-03-01 14:36:49 +08:00
因为这是个接口
hjc4869
2017-03-01 14:50:31 +08:00
说来 golang 的 UDPConn 不是有 WriteTo 吗
miyuki
2017-03-01 15:33:15 +08:00
D3EP
2017-03-01 15:54:00 +08:00
```go
func main() {
conn,err :=net.Dial("udp","127.0.0.1:9897")
if err != nil {
log.Fatal(err)
}
defer conn.Close()
conn.Write([]byte(""))
data := make([]byte, 1024)
n,err:=conn.Read(data)
if err != nil {
log.Fatal(err)
}
fmt.Println(string(data[:n]))
}
```
刚学 go ,试了一下可以的
hjc4869
2017-03-01 17:33:31 +08:00
@D3EP 楼主要的是先 bind 再 recv/sendto
Unknwon
2017-03-02 06:05:34 +08:00
不是说吹捧 Go 但这个黑实在好低级。。。自己写个 func sendto() 不就结了吗。。被语言惯坏了?

另外没怎么用过 Python 但是官网也是要先创建对象才能 sendto : https://wiki.python.org/moin/UdpCommunication 所以你说的 “一个 sendto() 简单明了。 ” 在我看来说难听点叫如同放屁。。。。

我竟然他妈的还这么耐心地对比了???
majinjing3
2017-03-05 16:13:18 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/344051

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX