Я хотел бы написать простую программу с сокетным соединением на kotlin / native:
Существует простая функция, которая открывает и связывает сокет.
actual fun openSocket(endpoint: IpPort): Socket {
// Initialize sockets in platform-dependent way.
init_sockets()
var socketDescriptor = 0
memScoped {
val serverAddr = alloc<sockaddr_in>()
socketDescriptor = socket(AF_INET, SOCK_STREAM, 0)
.ensureUnixCallResult("socket") { !it.isMinusOne() }
with(serverAddr) {
memset(this.ptr, 0, sockaddr_in.size.narrow())
sin_family = AF_INET.convert()
sin_addr.s_addr = inet_addr(endpoint.cstr.ptr); /
//sin_port = htons(endpoint.port.convert())
}
bind(socketDescriptor, serverAddr.ptr.reinterpret(), sockaddr_in.size.convert())
.ensureUnixCallResult("bind") { it == 0 }
}
return Socket(socketDescriptor)
}
Компилятор (./gradlew compileKonan)не может разрешить функции: inet_addr
, htons
.Также импортер компилятора import platform.ios.*
.Я думаю, что эти функции должны быть в заголовках системы iOS (и любой другой ОС).
Есть build.gradle
из
apply plugin: 'konan'
konan.targets = ['iphone']
konanArtifacts {
framework('MezzoCore') {
enableMultiplatform true
}
}
dependencies {
expectedBy project(':common')
}
Я не могу понять, что я делаю неправильно.Кто-нибудь может мне помочь?