Need help with peerdiscovery?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

schollz
509 Stars 35 Forks MIT License 89 Commits 6 Opened issues

Description

Pure-Go library for cross-platform local peer discovery using UDP multicast :woman: :repeat: :woman:

Services available

!
?

Need anything else?

Contributors list

# 1,353
locatio...
transfe...
golang
Vue.js
60 commits
# 108,661
tcl
nix
nginx-r...
Twitch
7 commits
# 503,938
Go
peer-to...
HTML
3 commits
# 109,055
golang
Shell
MATLAB
scienti...
3 commits
# 131,945
CSS
Shell
golang
gorouti...
2 commits
# 170,634
Kotlin
HTML
chromec...
Node.js
2 commits
# 88,435
aws-s3
Windows
documen...
knowled...
2 commits
# 467,863
JavaScr...
sequeli...
Go
peer-to...
1 commit
# 61,623
Go
golang
Shell
rule-ba...
1 commit

peerdiscovery

Code coverage Go Report Go Doc

Pure-go library for cross-platform thread-safe local peer discovery using UDP multicast. I needed to use peer discovery for croc and everything I tried had problems, so I made another one.

Install

Make sure you have Go 1.5+.

go get -u github.com/schollz/peerdiscovery

Usage

The following is a code to find the first peer on the local network and print it out.

discoveries, _ := peerdiscovery.Discover(peerdiscovery.Settings{Limit: 1})
for _, d := range discoveries {
    fmt.Printf("discovered '%s'\n", d.Address)
}

Here's the output when running on two computers. (Run these gifs in sync by hitting Ctl + F5).

Computer 1:

computer 1

Computer 2:

computer 1

For more examples, see the scanning examples (ipv4 and ipv6) or the docs.

Testing

To test the peer discovery with just one host, one can launch multiple containers. The provided

Dockerfile
will run the example code. Please make sure to enable Docker's IPv6 support if you are using IPv6 for peer discovery.
# Build the container, named peertest
$ docker build -t peertest .

Execute the following command in multiple terminals

$ docker run -t --rm peertest Scanning for 10 seconds to find LAN peers 100% |████████████████████████████████████████| [9s:0s]Found 1 other computers 0) '172.17.0.2' with payload 'zqrecHipCO'

Contributing

Pull requests are welcome. Feel free to...

  • Revise documentation
  • Add new features
  • Fix bugs
  • Suggest improvements

Thanks

Thanks @geistesk for adding IPv6 support and a

Notify
func, and helping maintain! Thanks @Kunde21 for providing a bug fix and massively refactoring the code in a much better way. Thanks @robpre for finding and fixing bugs. Thanks @shvydky for adding dynamic payloads.

License

MIT

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.