NetService
Swift NetService (Bonjour / Zeroconf / mDNS) implementation for Linux
Install / Use
/learn @Bouke/NetServiceREADME
Swift NetService (Bonjour / Zeroconf / mDNS) implementation for Linux
This module allows you to publish your own Bonjour service on the local network. On macOS NetService is included with Cocoa, however on Linux there's no such thing in the standard library.
Since version 0.5 this library uses dns_sd as the responder, instead of implementing mDNS itself. On macOS this means that it uses the system-wide daemon, and on Linux one should install libavahi-compat-libdnssd-dev to run the system-wide daemon.
Usage
See also NetService-Example. Note that like Apple's NetService, you need to run a RunLoop in order for the callbacks to happen.
There's also a command line tool included called dns-sd, with a subset of the functionality provided by Apple's tool with the same name. You can use this tool to verify the implementation and debug your network when advertisements are not working. Run swift run dns-sd --help for usage instructions.
Publish a NetService
This code will publish a new NetService advertising port 8000. Note that you need to setup a listening socket on port 8000 yourself.
import Foundation
import NetService
let service = NetService(domain: "local.", type: "_hap._tcp.", name: "Zithoek", port: 8000)
service.delegate = ...
service.publish()
withExtendedLifetime((service, delegate)) {
RunLoop.main.run()
}
Browsing for NetServices
This code will start a search for the given service type.
let browser = NetServiceBrowser()
browser.delegate = ...
browser.searchForServices(ofType: "_airplay._tcp.", inDomain: "local.")
withExtendedLifetime((browser, delegate)) {
RunLoop.main.run()
}
Credits
This library was written by Bouke Haarsma.
Related Skills
node-connect
354.3kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
112.3kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
354.3kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
354.3kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
