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