从零开始学golang之udp

freedbg · · 934 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

```go package main import ( "fmt" "net" ) /** UDP是无链接! UDP是无链接! UDP是无链接! DialUDP 是 pre-connected 其实是维持了一个发送地址 ListenUDP 是 unconnect 如果*UDPConn是connected,读写方法是Read和Write。 如果*UDPConn是unconnected,读写方法是ReadFromUDP和WriteToUDP(以及ReadFrom和WriteTo)。 如果使用dail 你将失去SetKeepAlive或TCPConn和UDPConn的SetReadBuffer 这些函数, 除非做类型转换 */ func main() { var wait string Dc() fmt.Scanln(&wait) } func Dc() { var raddr *net.UDPAddr raddr, err := net.ResolveUDPAddr("udp", "127.0.0.1:9123") conn, err := net.DialUDP("udp", nil, raddr) if err != nil { fmt.Println(err.Error()) } _, err = conn.Write([]byte("ARE-U-THERE")) if err != nil { fmt.Println(err.Error()) } var buf [1500]byte rlen, err := conn.Read(buf[0:]) if err != nil { fmt.Println(err.Error()) } fmt.Println(string(buf[0:rlen])) } func Ds() { var laddr *net.UDPAddr laddr, err := net.ResolveUDPAddr("udp", ":9123") conn, err := net.ListenUDP("udp", laddr) if err != nil { fmt.Println(err.Error()) } go func(conn *net.UDPConn) { var rbuf [1500]byte for { rlen, raddr, err := conn.ReadFromUDP(rbuf[0:]) if err != nil { fmt.Println(err.Error()) } fmt.Println(string(rbuf[0:rlen])) conn.WriteToUDP([]byte("I-AM-HERE"), raddr) } }(conn) } ``` 所有代码地址 https://github.com/godla/TCP-IP-Study.git

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

934 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传