搜索
bottom↓
回复: 2

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

[复制链接]

出0入16汤圆

发表于 2022-2-16 18:10:28 | 显示全部楼层 |阅读模式
以下是udp  server 放在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)
}

出0入228汤圆

发表于 2022-2-16 18:43:12 来自手机 | 显示全部楼层
本帖最后由 wxws 于 2022-2-16 18:46 编辑

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

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

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

出0入16汤圆

 楼主| 发表于 2022-2-16 19:29:09 | 显示全部楼层
wxws 发表于 2022-2-16 18:43
基础demo.  没做拨网线自动重连功能呀

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

大神,上传个例子学习啊。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子论坛 ( 公安交互式论坛备案:44190002001997 粤ICP备09047143号 )

GMT+8, 2022-7-5 09:12

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表