udp server client

Posted huyuan1004

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了udp server client相关的知识,希望对你有一定的参考价值。

简单的udp server

package main

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

func main()  
    // 组织一个udp地址结构,指定服务器的ip+port
    srvAddr, err := net.ResolveUDPAddr("udp","127.0.0.1:8000")
    if err != nil 
        fmt.Println("net.ResolveUDPAddr err:",err)
        return
    

    udpConn, err := net.ListenUDP("udp",srvAddr)
    if err != nil 
        fmt.Println("net.ListenUDP err:",err)
        return
    
    defer udpConn.Close()
    fmt.Println("服务器通信sockct创建完成")

    // 读取客户端的数据
    buf := make([]byte, 4096)
    // 返回3个值,读取到的字节数,客户端的地址,err
    n, cltAddr, err := udpConn.ReadFromUDP(buf)
    if err != nil 
        fmt.Println("udpConn.ReadFromUDP err:",err)
        return
    
    fmt.Println("读到",cltAddr,string(buf[:n]))

    // 回写数据给客户端
    daytime := time.Now().String()
    _, err = udpConn.WriteToUDP([]byte(daytime),cltAddr)
    if err != nil 
        fmt.Println("udpConn.WriteToUDP err:",err)
        return
    

简单的udp client

package main

import (
    "fmt"
    "net"
)

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()

    conn.Write([]byte("hello"))

    buf := make([]byte, 4096)
    n, err := conn.Read(buf)
    if err != nil 
        fmt.Println("conn.Read err:",err)
        return
    
    fmt.Println("服务器回发:",string(buf[:n]))

udp server并发

package main

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


func main()  

    srvAddr, err := net.ResolveUDPAddr("udp","127.0.0.1:8000")
    if err != nil 
        fmt.Println("net.ResolveUDPAddr err:",err)
        return
    

    udpConn, err := net.ListenUDP("udp",srvAddr)
    if err != nil 
        fmt.Println("net.ListenUDP err:",err)
        return
    
    defer udpConn.Close()
    fmt.Println("服务器通信sockct创建完成")

    // 读取客户端的数据
    buf := make([]byte, 4096)

    for 
        // 返回3个值,读取到的字节数,客户端的地址,err
        n, cltAddr, err := udpConn.ReadFromUDP(buf)     // --- 主go程读取客户端发送数据
        if err != nil 
            fmt.Println("udpConn.ReadFromUDP err:",err)
            return
        
        fmt.Println("读到",cltAddr,string(buf[:n]))

        go func ()  
            // 提取系统当前时间
            daytime := time.Now().String() + "\n"

            // 回写数据给客户端
            _, err = udpConn.WriteToUDP([]byte(daytime), cltAddr)
            if err != nil 
                fmt.Println("WriteToUDP err:", err)
                return
            
        ()
    

以上是关于udp server client的主要内容,如果未能解决你的问题,请参考以下文章

linux-TFTP服务

如何停止 Python 运行 Py4J ClientServer

22.Server Project

TCP连接(clientserver)状态转换

php创建udp Server

udp server client