GithubHelp home page GithubHelp logo

stoiandan / howdy Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 1.0 54 KB

Zero configuration network discovery tool for macOS

License: BSD 2-Clause "Simplified" License

Swift 100.00%
bonjour bonjour-browser bonjour-discovery bonjour-service network swift swiftui

howdy's Introduction

Howdy

Howdy helps you discover all your local LAN machines, including macOS, Windows and Linux. It's able to tell your their mDNS names.

How?

Howdy makes use of Apple's Bonjour, a zero-configuration netwoork service, via Network.framework.

It uses its very own protocol called zero, build on top of TCP/IP. It's a simple protocol, really. It contains a fixed sized header of 8 bytes that represents an UInt, declering the size of future json encoded hostname (for Unicode support ๐Ÿ˜ƒ):

image

So, every time a app instance starts, it publishes it's service on mDNS (Bonjour) and browse over other avlaible service on the local netowrk. If it finds one, it sends it's hostname via the Howdy (zero) protocol.

Here's and example of a Howdy instnace listing other three machines on the network:

image

To simulate these machines. I've used the dns-sd UNIX command to search for Bonjour services and resolve the port. I've then used netcat (nc) combined with echo to send an 8 byte UInt header via UDP and a plain-text string (for demo purposes):

echo -n -e '\x09\x00\x00\x00\x00\x00\x00\x00bar.local' | nc -u localhost 65172

Why?

While macOS's Finder does a good job in listing computers, sometimes they're simply not listed (probably because of OS policies) and not enough info is available (for example the IP Address). Howdy allows you to retireve all that, without lowering security, it also gives you more info.

Plans are to also allow file transfer via Howdy this is a good alternative to file sharing, as you don't have to start a share and turn it off, for sercutity, if all you want is to transfer.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.