mirror of https://gitee.com/godoos/godoos.git
6 changed files with 1010 additions and 1253 deletions
File diff suppressed because it is too large
@ -1,47 +0,0 @@ |
|||||
//go:build windows
|
|
||||
// +build windows
|
|
||||
|
|
||||
package localchat |
|
||||
|
|
||||
import ( |
|
||||
"encoding/json" |
|
||||
"fmt" |
|
||||
"log" |
|
||||
"net" |
|
||||
) |
|
||||
|
|
||||
func StartServiceDiscovery() { |
|
||||
// 解析多播地址
|
|
||||
addr, err := net.ResolveUDPAddr("udp4", broadcastAddr) |
|
||||
if err != nil { |
|
||||
fmt.Println("Error resolving multicast address:", err) |
|
||||
return |
|
||||
} |
|
||||
|
|
||||
// 监听本地网络接口上的多播地址
|
|
||||
conn, err := net.ListenMulticastUDP("udp4", nil, addr) |
|
||||
if err != nil { |
|
||||
fmt.Println("Error listening on multicast address:", err) |
|
||||
return |
|
||||
} |
|
||||
defer conn.Close() |
|
||||
|
|
||||
buffer := make([]byte, 1024) |
|
||||
for { |
|
||||
n, addr, err := conn.ReadFromUDP(buffer) |
|
||||
if err != nil { |
|
||||
log.Printf("Error reading from UDP: %v", err) |
|
||||
continue |
|
||||
} |
|
||||
fmt.Printf("Received message: %s from %s\n", buffer[:n], addr) |
|
||||
|
|
||||
var udpMsg UdpMessage |
|
||||
err = json.Unmarshal(buffer[:n], &udpMsg) |
|
||||
if err != nil { |
|
||||
fmt.Printf("Error unmarshalling JSON: %v\n", err) |
|
||||
continue |
|
||||
} |
|
||||
log.Printf("Get message: %+v", udpMsg) |
|
||||
OnlineUsers[udpMsg.IP] = udpMsg |
|
||||
} |
|
||||
} |
|
Loading…
Reference in new issue