Go语言 之UDP并发客户端与服务器

133次阅读
没有评论

共计 917 个字符,预计需要花费 3 分钟才能阅读完成。

服务端:

package main

import (
    "fmt"
    "net"
)

func main() {
    //创建udp地址
    udp_addr, err := net.ResolveUDPAddr("udp", "127.0.0.1:8000")
    if err != nil {
        fmt.Println(err.Error())
    }
    //监听udp地址
    udp_conn, err := net.ListenUDP("udp", udp_addr)
    if err != nil {
        fmt.Println(err.Error())
    }
    //延迟关闭监听
    defer udp_conn.Close()

    for {
        buf := make([]byte, 1024)
        //阻塞获取数据
        n, rAddr, err := udp_conn.ReadFromUDP(buf)
        if err != nil {
            fmt.Println(err.Error())
        }
        fmt.Printf("客户端【%s】,发送的数据为:%s\n", rAddr, string(buf[:n]))
        //发送给客户端数据
        _, errs := udp_conn.WriteToUDP([]byte("nice to meet you"), rAddr)
        if errs != nil {
            fmt.Println(err.Error())
        }
    }
}

客户端:

package main

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

func main() {
    conn, err := net.Dial("udp", ":8000")
    if err != nil {
        fmt.Println(err.Error())
    }
    defer conn.Close()

    go func() {
        str := make([]byte, 2048)
        n, _ := os.Stdin.Read(str)
        _, err1 := conn.Write(str[:n])
        if err1 != nil {
            fmt.Println(err1.Error())
        }
    }()
    buf := make([]byte, 2048)
    for {
        //读取数据
        n, err := conn.Read(buf)
        if err != nil {
            fmt.Println(err.Error())
        }
        fmt.Println("读到的数据:" + string(buf[:n]))
    }

}

 

正文完
 
admin
版权声明:本站原创文章,由 admin 2022-04-03发表,共计917字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)
验证码