質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

UDP

UDP(User Datagram Protocol)とは、トランスポート層のプロトコルであり、コネクション型のデータサービスです。IPネットワーク上の別のホストにコンピュータのアプリケーションがメッセージを送ることができ、転送チャンネルやデータ経路を設定する必要はありません。TCPに比べて高速であるが、信頼性が薄いという特徴があります。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

Q&A

解決済

1回答

1478閲覧

アンドロイドでのUDP

marusike

総合スコア11

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

UDP

UDP(User Datagram Protocol)とは、トランスポート層のプロトコルであり、コネクション型のデータサービスです。IPネットワーク上の別のホストにコンピュータのアプリケーションがメッセージを送ることができ、転送チャンネルやデータ経路を設定する必要はありません。TCPに比べて高速であるが、信頼性が薄いという特徴があります。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

0グッド

0クリップ

投稿2019/04/28 06:19

アプリでUDP通信をしたい

アンドロイドアプリを制作していてUDPで文字列を送信したいのですが、実行するとエラーで止まってしまいます。なんとかして送信できるようにしたいです。どなたかご教授お願いします。

エラーメッセージ android.os.NetworkOnMainThreadException at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1450) at libcore.io.BlockGuardOs.sendto(BlockGuardOs.java:302) at libcore.io.IoBridge.sendto(IoBridge.java:569) at java.net.PlainDatagramSocketImpl.send(PlainDatagramSocketImpl.java:124) at java.net.DatagramSocket.send(DatagramSocket.java:721) at com.example.udptest.UDPController.send(UDPController.kt:32) at com.example.udptest.MainActivity$onCreate$$inlined$timer$1$lambda$1.run(MainActivity.kt:19) at android.os.Handler.handleCallback(Handler.java:790) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:164) at android.app.ActivityThread.main(ActivityThread.java:6494) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807) ソースコード(kotlin) UDPContrloller.kt package com.example.udptest import java.net.DatagramPacket import java.net.DatagramSocket import java.net.InetAddress object UDPController { var ip = InetAddress.getByName("192.168.11.5") var port = 5000 fun receive() : String { 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) { 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.example.udptest import android.support.v7.app.AppCompatActivity import android.os.Bundle import android.os.Handler import kotlin.concurrent.timer class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val handler = Handler() timer(period = 5000){ handler.post(object:Runnable{ override fun run(){ UDPController.send("hello") } }) } } }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ここでNetworkOnMainThreadExceptionが出ているのは、その名の通りメインスレッドでネットワーク処理をしてしまっているのが原因なので、別のスレッドで処理するようにしてください。

投稿2019/04/28 07:16

kabao

総合スコア648

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

marusike

2019/04/28 11:26

別のスレッドで処理したら解決しました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問