zhangzengfei
2023-09-04 e8e536d1cb52d2126c8c7ce2ba1c7a76f7208678
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package broadcast
 
import (
    "basic.com/valib/logger.git"
    "github.com/gogf/greuse"
    "strconv"
    "vamicro/config"
    "vamicro/system-service/sys"
)
 
var (
    port = 31995
)
 
//开启广播的接收端
func StartServer() error {
    localIp, _, _ := sys.GetLocalIP(config.Server.NetworkAdapter)
    if localIp == "" {
        localIp = "0.0.0.0"
    }
 
    conn, err := greuse.ListenPacket("udp", localIp+":"+strconv.Itoa(port))
    if err != nil {
        logger.Debug("ListenPacket err:", err)
        return err
    }
 
    defer conn.Close()
    buf := make([]byte, 1024)
    for {
        n, remoteAddr, err := conn.ReadFrom(buf)
        if err != nil {
            logger.Debug("read from broadcast buf err:", err)
            continue
        }
        logger.Debug("receive msg from broadcast:", string(buf[:n]))
        wn, we := conn.WriteTo([]byte("hello"), remoteAddr)
        logger.Debug("write broadcast resp err:", we, " wn:", wn)
 
    }
}