Guest User

Untitled

a guest
Aug 21st, 2018
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.17 KB | None | 0 0
  1. package main
  2.  
  3. import (
  4. "context"
  5. "flag"
  6. "log"
  7. "time"
  8. "strings"
  9.  
  10. "github.com/grandcat/zeroconf"
  11. )
  12.  
  13. var (
  14. service = flag.String("service", "_workstation._tcp", "Set the service category to look for devices.")
  15. domain = flag.String("domain", "local", "Set the search domain. For local networks, default is fine.")
  16. waitTime = flag.Int("wait", 10, "Duration in [s] to run discovery.")
  17. )
  18.  
  19. func main() {
  20. flag.Parse()
  21.  
  22. // Discover all services on the network (e.g. _workstation._tcp)
  23. resolver, err := zeroconf.NewResolver(nil)
  24. if err != nil {
  25. log.Fatalln("Failed to initialize resolver:", err.Error())
  26. }
  27.  
  28. entries := make(chan *zeroconf.ServiceEntry)
  29. go func(results <-chan *zeroconf.ServiceEntry) {
  30. for entry := range results {
  31. log.Println(entry)
  32. log.Println("ServiceRecord.Instance:", entry.ServiceRecord.Instance)
  33. log.Println("ServiceRecord.Service:", entry.ServiceRecord.Service)
  34. log.Println("ServiceRecord.Domain:", entry.ServiceRecord.Domain)
  35. log.Println("HostName:", entry.HostName)
  36. log.Println("Port:", entry.Port)
  37. log.Println("Text:", strings.Join(entry.Text, ","))
  38. log.Println("TTL:", entry.TTL)
  39. log.Println("AddrIPv4:", entry.AddrIPv4)
  40. log.Println("AddrIPv6:", entry.AddrIPv6)
  41. for _, s := range entry.Text {
  42. log.Println(s)
  43. }
  44. }
  45. log.Println("No more entries.")
  46. }(entries)
  47.  
  48. ctx, cancel := context.WithTimeout(context.Background(), time.Second*time.Duration(*waitTime))
  49. defer cancel()
  50. err = resolver.Browse(ctx, *service, *domain, entries)
  51. if err != nil {
  52. log.Fatalln("Failed to browse:", err.Error())
  53. }
  54.  
  55. <-ctx.Done()
  56. // Wait some additional time to see debug messages on go routine shutdown.
  57. time.Sleep(1 * time.Second)
  58. }
Add Comment
Please, Sign In to add comment