go语言实现简易的UDP通讯

1.客户端代码

package main

import (
   "net"
   "os"
   "fmt"
)

func main() {
   conn, err := net.Dial("udp", "127.0.0.1:8000")
   if err != nil {
      fmt.Println("net.Dial err:", err)
      return
   }
   defer conn.Close()
   go func() {
      str := make([]byte, 1024)
      for {
         n, err := os.Stdin.Read(str) //从键盘读取内容, 放在str
         if err != nil {
            fmt.Println("os.Stdin. err1 = ", err)
            return
         }
         conn.Write(str[:n])       // 给服务器发送
      }
   }()
   buf := make([]byte, 1024)
   for {
      n, err := conn.Read(buf)
      if err != nil {
         fmt.Println("conn.Read err:", err)
         return
      }
       fmt.Println("服务器传达 : ", string(buf[:n]))
   }
}

2.服务端代码

package main

import (
   "net"
   "fmt"
   "time"
)

func main() {
   // 创建 服务器 UDP 地址结构。指定 IP + port
   laddr, err := net.ResolveUDPAddr("udp", ":8000")
   if err != nil {
      fmt.Println("ResolveUDPAddr err:", err)
      return
   }
   // 监听 客户端连接
   conn, err := net.ListenUDP("udp", laddr)
   if err != nil {
      fmt.Println("net.ListenUDP err:", err)
      return
   }
   defer conn.Close()

   for {
		recvUDPMsg(conn)
   }
}
//UDP接受操作
func recvUDPMsg(conn *net.UDPConn){
	buf := make([]byte, 1024)
	n, raddr, err := conn.ReadFromUDP(buf)
	if err != nil {
	   fmt.Println("conn.ReadFromUDP err:", err)
	   return
	}
	now := time.Now().Format("2006/1/2 15:04:05")
	fmt.Printf("%s-接收到客户端[%s]:%s", now, raddr, string(buf[:n]))
  
	conn.WriteToUDP([]byte("Server receive at " + now), raddr) // 简单回写数据给客户端
}

通过go build 编译生成exe执行文件 如下图操作

客户端随便输入点文字然后点击回车, 然后服务端自动将消息当时的时间返回给客户端

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值