Browse Source

Multicast test utility

Jakob Borg 11 years ago
parent
commit
b783169c72
2 changed files with 38 additions and 1 deletions
  1. 7 1
      mc/beacon.go
  2. 31 0
      mc/cmd/mctest/main.go

+ 7 - 1
mc/beacon.go

@@ -86,7 +86,13 @@ func (b *Beacon) run() {
 				if debug {
 					dlog.Printf("recv %d bytes from %s on %s", n, addr, dst.intf)
 				}
-				b.outbox <- recv{bs[:n], addr}
+				select {
+				case b.outbox <- recv{bs[:n], addr}:
+				default:
+					if debug {
+						dlog.Println("Dropping message")
+					}
+				}
 			}
 		}()
 	}

+ 31 - 0
mc/cmd/mctest/main.go

@@ -0,0 +1,31 @@
+package main
+
+import (
+	"encoding/binary"
+	"log"
+	"time"
+
+	"github.com/calmh/syncthing/mc"
+)
+
+func main() {
+	b := mc.NewBeacon("239.21.0.25", 21025)
+	go func() {
+		for {
+			bs, addr := b.Recv()
+			log.Printf("Received %d bytes from %s: %x %x", len(bs), addr, bs[:8], bs[8:])
+		}
+	}()
+	go func() {
+		bs := [16]byte{}
+		binary.BigEndian.PutUint64(bs[:], uint64(time.Now().UnixNano()))
+		log.Printf("My ID: %x", bs[:8])
+		for {
+			binary.BigEndian.PutUint64(bs[8:], uint64(time.Now().UnixNano()))
+			b.Send(bs[:])
+			log.Printf("Sent %d bytes", len(bs[:]))
+			time.Sleep(10 * time.Second)
+		}
+	}()
+	select {}
+}