My sample project source code in GitHub

Permissions

1
2
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>

Open socket

1
2
3
4
5
6
7
8
9
10
11
12
fun open(port: Int): Boolean {
mPort = port
try {
mSocket = DatagramSocket(port)
mSocket?.broadcast = true
mSocket?.reuseAddress = true
return true
} catch (e: Exception) {
e.printStackTrace()
}
return false
}

Close socket

1
2
3
4
5
6
fun close(): Boolean {
if (mSocket != null && mSocket?.isClosed?.not() as Boolean) {
mSocket?.close()
}
return true
}

Send

1
2
3
4
5
6
7
8
9
10
11
12
fun sendPacket(buffer: ByteArray): Boolean {
try {
val packet = DatagramPacket(buffer, buffer.size)
packet.address = InetAddress.getByName("255.255.255.255")
packet.port = mPort
mSocket?.send(packet)
return true
} catch (e: Exception) {
e.printStackTrace()
}
return false
}

Receive

1
2
3
4
5
6
7
8
9
10
11
fun recvPacket(buffer: ByteArray): Boolean {
val packet = DatagramPacket(buffer, buffer.size)
try {
mSocket?.receive(packet)
println("recv packet ${packet.address} ${packet.data}")
return true
} catch (e: Exception) {
e.printStackTrace()
}
return false
}

Reference

Android DatagramSocket Doc