redworlf007 发表于 2022-2-16 18:10:28

go语言开发新塘NUC980之udp搜索开发板

以下是udpserver 放在980板子上
package main

import (
        "fmt"
        "net"
)

func main() {
        // 创建监听
        socket, err := net.ListenUDP("udp4", &net.UDPAddr{
                IP:   net.IPv4(0, 0, 0, 0),
                Port: 68,
        })
        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)
                }
        }
}
**********************************************************************************

以下是client端 放在PC上跑

package main

import (
        "fmt"
        "net"
)

// 启用客户端注释掉的那段代码
func main() {
        // 这里设置发送者的IP地址,自己查看一下自己的IP自行设定
        laddr := net.UDPAddr{
                IP:   net.IPv4(10, 10, 10, 51),
                Port: 6667,
        }
        // 这里设置接收者的IP地址为广播地址
        raddr := net.UDPAddr{
                IP: net.IPv4(255, 255, 255, 255),
                //IP:   net.IPv4(10, 10, 10, 124),
                Port: 68,
        }
        // 创建监听
        socket, err := net.ListenUDP("udp4", &laddr)
        if err != nil {
                fmt.Println("connect udp failure!", err)
                return
        }
        defer socket.Close()

        // 发送数据
        sendBts := []byte("hello server!")
        _, err = socket.WriteToUDP(sendBts, &raddr)
        if err != nil {
                fmt.Println("send msg failure!", err)
                return
        }

        // 接收数据
        data := make([]byte, 4096)
        fmt.Println("接收数据")

        read, remoteAddr, err := socket.ReadFromUDP(data)
        fmt.Println("err=", err)
        if err != nil {
                fmt.Println("读取数据失败!", err)
                return
        }
        fmt.Println(read, remoteAddr)
        fmt.Printf("%s\n", data)
}

wxws 发表于 2022-2-16 18:43:12

本帖最后由 wxws 于 2022-2-16 18:46 编辑

基础demo.没做拨网线自动重连功能呀

另外,我一般是在服务器上做广播,客户机固定监听端口。换了服务器,客户端立马自动更新了。

客户机不用记服务器地址。反之也是。

redworlf007 发表于 2022-2-16 19:29:09

wxws 发表于 2022-2-16 18:43
基础demo.没做拨网线自动重连功能呀

另外,我一般是在服务器上做广播,客户机固定监听端口。换了服务器 ...
(引用自2楼)

大神,上传个例子学习啊。
页: [1]
查看完整版本: go语言开发新塘NUC980之udp搜索开发板