欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

golang实现简单的udp协议服务端与客户端示例

程序员文章站 2022-08-29 08:33:45
本文实例讲述了golang实现简单的udp协议服务端与客户端。分享给大家供大家参考,具体如下: 其实udp没有什么服务端和客户端的概念了,只是一个发一个收而已,只是这样较...

本文实例讲述了golang实现简单的udp协议服务端与客户端。分享给大家供大家参考,具体如下:

其实udp没有什么服务端和客户端的概念了,只是一个发一个收而已,只是这样较方便能识别和理解.

服务端:

复制代码 代码如下:
package main
import (
    "fmt"
    "net"
)
func main() {
    // 创建监听
    socket, err := net.listenudp("udp4", &net.udpaddr{
        ip:   net.ipv4(0, 0, 0, 0),
        port: 8080,
    })
    if err != nil {
        fmt.println("监听失败!", err)
        return
    }
    defer socket.close()
    for {
        // 读取数据
        data := make([]byte, 4096)
        read, remoteaddr, err := socket.readfromudp(data)
        if err != nil {
            fmt.println("读取数据失败!", err)
            continue
        }
        fmt.println(read, remoteaddr)
        fmt.printf("%s\n\n", data)
        // 发送数据
        senddata := []byte("hello client!")
        _, err = socket.writetoudp(senddata, remoteaddr)
        if err != nil {
            return
            fmt.println("发送数据失败!", err)
        }
    }
}

客户端:

复制代码 代码如下:
package main
import (
    "fmt"
    "net"
)
func main() {
    // 创建连接
    socket, err := net.dialudp("udp4", nil, &net.udpaddr{
        ip:   net.ipv4(192, 168, 1, 103),
        port: 8080,
    })
    if err != nil {
        fmt.println("连接失败!", err)
        return
    }
    defer socket.close()
    // 发送数据
    senddata := []byte("hello server!")
    _, err = socket.write(senddata)
    if err != nil {
        fmt.println("发送数据失败!", err)
        return
    }
    // 接收数据
    data := make([]byte, 4096)
    read, remoteaddr, err := socket.readfromudp(data)
    if err != nil {
        fmt.println("读取数据失败!", err)
        return
    }
    fmt.println(read, remoteaddr)
    fmt.printf("%s\n", data)
}

希望本文所述对大家go语言程序设计有所帮助。