コード
パーミッションの設定
AndroidManifest.xml
<uses-permission android:name="android.permission.INTERNET" />
UDP Controller
UDPController.kt
package com.hoge.fuga.piyo
import java.net.DatagramPacket
import java.net.DatagramSocket
import java.net.InetAddress
object UDPController {
var ip = InetAddress.getByName("ここにIPアドレス")
var port = 5000
fun receive() : String {
// udpを受信して、文字列にして返す
val socket = DatagramSocket(port)
val buffer = ByteArray(8192)
val packet = DatagramPacket(buffer, buffer.size)
socket.receive(packet)
socket.close()
return String(buffer)
}
fun send(msg: String) {
// udpで文字列を送信する
val socket = DatagramSocket(port)
val byte = msg.toByteArray();
val packet = DatagramPacket(byte, byte.size, ip, port);
socket.send(packet);
socket.close()
}
}
アクティビティ
MainActivity.kt
package com.hoge.fuga.piyo
import android.content.Context
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.widget.Toast
import kotlinx.coroutines.experimental.android.UI
import kotlinx.coroutines.experimental.launch
import java.lang.Thread.sleep
import kotlin.concurrent.thread
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
thread {
while (true) {
// UDP受信
var msg = UDPController.receive()
launch(UI) {
// UDP受信した内容を表示
Toast.makeText(this@MainActivity, "$msg", Toast.LENGTH_SHORT).show()
}
// UDP送信
UDPController.send("hello")
}
}
}
}