いつもお世話になっています。
AndroidアプリでTCP/IPの通信をやりたく、現在勉強中ですが
まずはUDPからと始めたソースがうまく動いてくれません。
前提・実現したいこと
UDPで送受信をしたいが受信がされない。
UDPの送信は受信前に完了済み。
発生している問題・エラーメッセージ
受信待ちになっているかと思われるが、
うんともすんとも言わない。
(WiresharkやUDPツールでパケット受信は確認済)
該当のソースコード
画面は受信した内容を表示するTextView
が一つのみ
kotlin
1class ReceiveWindow : AppCompatActivity() { 2 override fun onCreate(savedInstanceState: Bundle?) { 3 super.onCreate(savedInstanceState) 4 setContentView(R.layout.activity_receive_window) 5 6 // 受信表示用TextViewを取得 7 val receiveView = findViewById<TextView>(R.id.textView) 8 9 // 受信処理開始 10 thread { 11 val msg = ByteArray(256) 12 val receiveSocket = DatagramSocket() 13 socket.connect(InetAddress.getByName("192.168.0.115"), 50000) 14 val packet = DatagramPacket(msg, msg.size) 15 Log.d("NetworkStatusExample", "Receive Start") // ログに表示 16 receiveSocket.receive(packet) 17 Log.d("NetworkStatusExample", "Receive Stop") // これはログに表示されていない 18 receiveView.text = msg.toString() 19 receiveSocket.close() 20 } 21 } 22}
試したこと
val receiveSocket = DatagramSocket(50000)
とやると
ポート確認のsocket.port
で -1 の値が表示されてしまうため
あえてsocket.connect
を使用しています。
Try-catch
でエラーが出ているかどうかを確認しましたが、
特にエラーは無し。
補足情報(FW/ツールのバージョンなど)
カスペルスキーが邪魔をしていたので、無効化。
FireWallにUDPポート50000の許可を登録。
送信側は別PCのPython3でsend
と記述したパケットを送信。
受信確認はTCP/IPツールでUDP受信を確認。
(併せてWiresharkでも受信を確認済み)
Android Studio: 2020.3.1 Patch2
Kotlin: 203-1.5.31-release-550-AS7717.8
AndroidManifest
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
申し訳ありませんが、どなたかご教示くださいませ。
回答1件
あなたの回答
tips
プレビュー