Fix macos mdns and support macosx64

This commit is contained in:
2025-09-30 15:08:53 +08:00
parent 1866736d86
commit ad9ee0884e
3 files changed
+9 -7

No files matched your search

+4 -3
View File
@@ -2,14 +2,15 @@
A Kotlin multiplatform library for mdns announcer(mdns server), only broadcast is supported, A Kotlin multiplatform library for mdns announcer(mdns server), only broadcast is supported,
Also, nmdns can be compiled to shared/static lib for other language calling, see [build.gradle.kts](build.gradle.kts) Also, nmdns can be compiled to shared/static lib for other language calling, see [c++ example](#cpp)
Supported platforms: Supported platforms:
1. windows64(mingwx64) 1. windows64(mingwx64)
2. linuxX64 2. linuxX64
3. linuxArm64 3. linuxArm64
4. macosArm64 4. macosArm64
5. jvm(11 or later) 5. macosX64
6. jvm(11 or later)
Supported srv type Supported srv type
1. A 1. A
@@ -64,7 +65,7 @@ while (true) {
} }
``` ```
# C++ # cpp
```cpp ```cpp
#include <csignal> #include <csignal>
+2 -1
View File
@@ -17,7 +17,8 @@ kotlin {
linuxArm64(), linuxArm64(),
linuxX64(), linuxX64(),
mingwX64(), mingwX64(),
macosArm64() macosArm64(),
macosX64()
) )
jvm { compilerOptions { jvmTarget = JvmTarget.JVM_11 } } jvm { compilerOptions { jvmTarget = JvmTarget.JVM_11 } }
@@ -34,7 +34,7 @@ public actual class Socket1 internal actual constructor() {
val addr = alloc<sockaddr_in>() val addr = alloc<sockaddr_in>()
addr.sin_family = AF_INET.convert() addr.sin_family = AF_INET.convert()
addr.sin_port = htons(port.toUShort()) addr.sin_port = htons(port.toUShort())
addr.sin_addr.s_addr = htonl(INADDR_ANY) addr.sin_addr.s_addr = inet_addr(ip)
if (bind(socket, addr.ptr.reinterpret(), sizeOf<sockaddr_in>().convert()) < 0) { if (bind(socket, addr.ptr.reinterpret(), sizeOf<sockaddr_in>().convert()) < 0) {
perror("Failed to bind") perror("Failed to bind")
close(socket) close(socket)
@@ -43,8 +43,8 @@ public actual class Socket1 internal actual constructor() {
memScoped { memScoped {
val mreq = alloc<ip_mreq>() val mreq = alloc<ip_mreq>()
mreq.imr_multiaddr.s_addr = inet_addr("224.0.0.251") mreq.imr_multiaddr.s_addr = inet_addr("224.0.0.251")
mreq.imr_interface.s_addr = htonl(INADDR_ANY) mreq.imr_interface.s_addr = inet_addr(ip)
if (setsockopt(socket, IPPROTO_TP, IP_ADD_MEMBERSHIP, mreq.ptr, sizeOf<ip_mreq>().convert()) < 0) { if (setsockopt(socket, IPPROTO_IP, IP_ADD_MEMBERSHIP, mreq.ptr, sizeOf<ip_mreq>().convert()) < 0) {
perror("setsockopt IP_ADD_MEMBERSHIP") perror("setsockopt IP_ADD_MEMBERSHIP")
} }
} }