golang udp example

udp_client

package main

import (
	"fmt"
	"net"
)

const (
	UDP = "udp"
)

func main() {
	conn, err := net.Dial(UDP, "127.0.0.1:3600")
	if err != nil {
		fmt.Println(err)
		return
	}

	defer conn.Close()

	for {
		msg := ""
		fmt.Scanf("%s\n", &msg)
		if msg == "STOP" {
			break
		}

		conn.Write([]byte(msg))

		buff := make([]byte, 2048)
		n, _ := conn.Read(buff)
		fmt.Printf("recv:%s\n", string(buff[0:n]))
	}

}

udp_server

package main

import (
	"fmt"
	"net"
	"strings"
)

const (
	UDP = "udp"
)

func main() {
	s, err := net.ResolveUDPAddr(UDP, ":3600")
	if err != nil {
		fmt.Println(err)
		return
	}

	conn, err := net.ListenUDP(UDP, s)
	if err != nil {
		fmt.Println(err)
		return
	}

	defer conn.Close()

	buff := make([]byte, 2048)
	for {
		n, raddr, err := conn.ReadFromUDP(buff)
		if err != nil {
			fmt.Println(err)
			break
		}

		if strings.TrimSpace(string(buff[0:n])) == "STOP" {
			fmt.Println("Stop server.")
			break
		}

		fmt.Printf("[recv]:%s. from:%s\n", string(buff[0:n]), raddr.String())

		msg := "I received your msg."
		conn.WriteToUDP([]byte(msg), raddr)
		fmt.Printf("[send]:%s.\n", msg)

	}

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章