I'm working on simple TCP/IP application on Android that sends/receives packages.
I have set up code to find to host and join network. My code works where client is able to auto join the server when it's available, however, when i discover a open server, i want to send request/message to server that I want to join your server.
here's my code.
// Activity to hold our server socket
serverSocket: ServerSocket? = null
// Create a listen socket
val port: Int
serverSocket = ServerSocket(0).also { socket ->
// Store the chosen port.
port = socket.localPort
}
Thread(Runnable {
while (serverSocket != null) {
try {
serverSocket?.accept()?.let {
Log.d("ServerSocket", "accepted client")
// client found, connect to client automatically
connectToClient()
}
} catch (e: SocketException) {
break
}
}
}).start()
nsdManager.registerService(serviceInfo, NsdManager.PROTOCOL_DNS_SD, registrationListener)
than for client i'm using this to discover server
nsdManager.discoverServices("_LocalNetworkingApp._tcp.", NsdManager.PROTOCOL_DNS_SD, discoveryListener)
private val discoveryListener = object : NsdManager.DiscoveryListener {
...
override fun onServiceFound(service: NsdServiceInfo) {
Log.d(TAG, "Service found ${service.serviceName}")
nsdManager.resolveService(service, resolveListener)
}
}
// in resolverServices' `onServiceResolved` function is where i'm connected to the server