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:46 编辑
基础demo.没做拨网线自动重连功能呀
另外,我一般是在服务器上做广播,客户机固定监听端口。换了服务器,客户端立马自动更新了。
客户机不用记服务器地址。反之也是。 wxws 发表于 2022-2-16 18:43
基础demo.没做拨网线自动重连功能呀
另外,我一般是在服务器上做广播,客户机固定监听端口。换了服务器 ...
(引用自2楼)
大神,上传个例子学习啊。
页:
[1]