henryspace

记录精彩的程序人生 开始使用

Part 34 - Go 语言学习 - Go 实现 UDP 通信

Go实现UDP通信

  1. 服务端
package main

import (
	"fmt"
	"net"
)

func main() {
	listen, err := net.ListenUDP("udp", &net.UDPAddr{
		IP:   net.IPv4(0, 0, 0, 0),
		Port: 30000,
	})
	if err != nil {
		fmt.Println("listen failed:", err)
		return
	}
	defer func() {
		err := listen.Close()
		if err != nil {
			fmt.Println("关闭连接失败:", err)
		}
	}()
	for {
		var data [1024]byte
		n, addr, err := listen.ReadFromUDP(data[:])
		if err != nil {
			fmt.Println("read faild:", err)
			continue
		}
		fmt.Printf("data:%v addr:%v count:%v\n", string(data[:n]), addr, n)
		_, err = listen.WriteToUDP(data[:n], addr)
		if err != nil {
			fmt.Println("write to udp failed:", err)
			continue
		}
	}

}


  1. 客户端
package main

import (
	"fmt"
	"net"
)

func main() {
	socket, err := net.DialUDP("udp", nil, &net.UDPAddr{
		IP:   net.IPv4(0, 0, 0, 0),
		Port: 30000,
	})
	if err != nil {
		fmt.Println("连接服务端失败:", err)
		return
	}
	defer socket.Close()

	sendData := []byte("Hello, Server!")
	_, err = socket.Write(sendData)
	if err != nil {
		fmt.Println("send data failed:", err)
		return
	}
	data := make([]byte, 4096)
	n, remoteAddr, err := socket.ReadFromUDP(data[:])
	if err != nil {
		fmt.Println("接收数据失败:", err)
		return
	}
	fmt.Printf("data:%v addr:%v count:%v", string(data[:n]), remoteAddr, n)
}

// 先启动服务端
// 运行客户端
// 控制台响应数据

评论
留下你的脚步
推荐阅读