LoginSignup
9
11

More than 5 years have passed since last update.

Android でUDP通信をする

Posted at

コード

パーミッションの設定

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")

            }
        }

    }
}
9
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
11