2 changed files with 56 additions and 0 deletions
@ -0,0 +1,53 @@ |
|||||
|
package discovery |
||||
|
|
||||
|
import ( |
||||
|
"fmt" |
||||
|
"net" |
||||
|
"os" |
||||
|
"strings" |
||||
|
"xtcfs/config" |
||||
|
) |
||||
|
|
||||
|
// 分隔符
|
||||
|
const separator = "|" |
||||
|
|
||||
|
func Listen() { |
||||
|
// 创建udp
|
||||
|
addr, err := net.ResolveUDPAddr("udp", config.G.LocalIP) |
||||
|
ChkError(err) |
||||
|
//
|
||||
|
conn, err := net.ListenUDP("updp", addr) |
||||
|
ChkError(err) |
||||
|
// 延迟关闭
|
||||
|
defer conn.Close() |
||||
|
|
||||
|
buf := make([]byte, 1024) |
||||
|
for { |
||||
|
//
|
||||
|
n, src, err := conn.ReadFromUDP(buf) |
||||
|
|
||||
|
remoteAddr := src.IP.String() + ":" + config.G.Port |
||||
|
|
||||
|
if err != nil { |
||||
|
fmt.Printf("Failed to read from %s: %v\n", remoteAddr, err) |
||||
|
continue |
||||
|
} |
||||
|
|
||||
|
message := string(buf[:n]) |
||||
|
parts := strings.Split(message, separator) |
||||
|
if len(parts) != 2 { |
||||
|
fmt.Printf("Received malformed message from %s: %s\n", remoteAddr, message) |
||||
|
continue |
||||
|
} |
||||
|
|
||||
|
// 切割
|
||||
|
fmt.Print("parts from udp read :%v", parts) |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
func ChkError(err error) { |
||||
|
if err != nil { |
||||
|
fmt.Fprint(os.Stderr, "Faltat error", err.Error()) |
||||
|
os.Exit(1) |
||||
|
} |
||||
|
} |
||||
Loading…
Reference in new issue