有个项目需求是2台设备分为主副端。主端有开启本地服务,端口号固定。
计划自动查找并获得服务端的ip号进行连接和通信。
想到android有个nsd服务,然后调研了下并且实施到项目中。
如下代码是注册开启nsd服务
class NsdServerService : IntentService("NsdServerService") {
companion object {
val TAG = "NsdServerService"
val SERVICE_TYPE = "_http._tcp."
var SERVICE_NAME = "NsdChat";
}
override fun onHandleIntent(intent: Intent?) {
registNsdServer();
}
fun registNsdServer() {
// Create the NsdServiceInfo object, and populate it.
var serverSocket = ServerSocket(0).also { socket ->
// Store the chosen port.
mLocalPort = socket.localPort
}
val serviceInfo = NsdServiceInfo().apply {
// The name is subject to change based on conflicts
// with other services advertised on the same network.
serviceName = SERVICE_NAME