mDNS for all platforms (really device discovery)

I would like to add device discovery to a portfolio of Xojo applications (mobile, desktop, web) for an embedded-systems device based on the ESP32. Specifically finding the IP address of devices on a local network so the applications can talk to them. The ESP32 SDK supports mDNS so that technology seems like a possibility. I see that Monkeybread has a mDNS plugin but it only supports OS X and iOS. I need to support Apple platforms plus Windows and linux desktops and web (and eventually Android).

Before considering rolling my own I am curious if anyone knows of other Xojo mDNS solutions? If not then do any networking gurus know if it would be possible to write a Xojo-only solution instead of trying to wrap different libraries for each platform (or perhaps buy Monkeybread and only wrap Win/Linux)? I’m a bit out of my depth with this.

Or does anyone know of any other device discovery solutions that could be implemented with Xojo (and on the ESP32)? Perhaps some proprietary UDP protocol could be developed but I have read that various routers/access points sometimes filter these out during traversal from Wifi to LAN domains.

Historically what I have done is use UDP and broadcast or multicast packets. This should be available on most if not all platforms.

But depending on the local network, virtually ALL intraLAN traffic may be blocked. This is typical of public wifi such as hotels, coffee shops, convention centers, etc. Or “Guest” networks in home routers.

There is no workaround within the LAN (AFAIK) – that is the point of the intraLAN blocks. Provide internet access without access to other devices on the LAN.

Our MBS Plugins habe several classes for this:

1 Like

It looks like avahi supports Linux. Do you have anything for Windows? Windows is, as usual, the biggest part of the user base.

DNSService* classes are for Windows, too.