分享
  1. 首页
  2. 文章

Golang实现UDP Server

筑梦攻城狮 · · 3517 次点击 · · 开始浏览
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。


Server端

1、net.ListenUDP() 监听UDP服务

2、net.UDPConn.ReadFromUDP() 循环读取数据

3、net.UDPConn.WriteToUDP() 写数据

package main
import (
  "fmt"
  "log"
  "net"
)
func main() {
  // 监听UDP服务
  udpConn,err := net.ListenUDP("udp",&net.UDPAddr{
   IP: net.IPv4(0,0,0,0),
   Port: 9090,
  })
  if err != nil{
   log.Fatal("Listen failed,",err)
   return
  }
  // 循环读取消息
  for {
   var data [1024]byte
   n,addr,err := udpConn.ReadFromUDP(data[:])
   if err != nil{
     log.Printf("Read from udp server:%s failed,err:%s",addr,err)
     break
   }
   go func() {
     // 返回数据
     fmt.Printf("Addr:%s,data:%v count:%d \n",addr,string(data[:n]),n)
     _,err := udpConn.WriteToUDP([]byte("msg recived."),addr)
     if err != nil{
      fmt.Println("write to udp server failed,err:",err)
     }
   }()
  }
}


Client端

1、net.Dial() 建立连接

2、net.UDPConn.Write() 写数据

3、net.UDPConn.ReadFromUDP() 回复数据

package main
import (
  "fmt"
  "log"
  "net"
)
func main() {
  // 连接服务器
  conn,err := net.DialUDP("udp",nil,&net.UDPAddr{
   IP: net.IPv4(127,0,0,1),
   Port: 9090,
  })
  if err != nil {
   log.Println("Connect to udp server failed,err:",err)
   return
  }
  for i:=0;i<10;i++{
   // 发送数据
   _,err := conn.Write([]byte(fmt.Sprintf("udp testing:%v",i)))
   if err != nil {
     fmt.Printf("Send data failed,err:",err)
     return
   }
   //接收数据
   result := make([]byte,1024)
   n,remoteAddr,err := conn.ReadFromUDP(result)
   if err != nil{
     fmt.Printf("Read from udp server failed ,err:",err)
     return
   }
   fmt.Printf("Recived msg from %s, data:%s \n",remoteAddr,string(result[:n]))
  }
}



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

本文来自:51CTO博客

感谢作者:筑梦攻城狮

查看原文:Golang实现UDP Server

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

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

用户登录

没有账号?注册
(追記) (追記ここまで)

今日阅读排行

    加载中
(追記) (追記ここまで)

一周阅读排行

    加载中

关注我

  • 扫码关注领全套学习资料 关注微信公众号
  • 加入 QQ 群:
    • 192706294(已满)
    • 731990104(已满)
    • 798786647(已满)
    • 729884609(已满)
    • 977810755(已满)
    • 815126783(已满)
    • 812540095(已满)
    • 1006366459(已满)
    • 692541889

  • 关注微信公众号
  • 加入微信群:liuxiaoyan-s,备注入群
  • 也欢迎加入知识星球 Go粉丝们(免费)

给该专栏投稿 写篇新文章

每篇文章有总共有 5 次投稿机会

收入到我管理的专栏 新建专栏