Kotlin に入門する
Android Studio をインストール
こちらやってみる
スマホを USB 接続して、Run できた。動くとやっぱり感動する
ただ、編集 -> Run だとスマホに反映するのに体感時間がかかるときもある。その時は、@Preview つけて確認したほうがいいのかも
パケットキャプチャ・生成関連
生成においては、src / dst MAC を変えたい、みたいなのいままでそんななかったと思う(できれば欲しいけど)。IP 以上を変更できればそれで良さそう?
それでいい。とりあえず簡易に作ってみる
Socket 扱うときの permission error
android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork
ただ、AsyncTask は非推奨
ネットワーク通信はメインスレッドでないスレッドでやれだそう
動作確認できた
Androidスマホ実機(OS ver 14)・WindowsPC・RaspberryPi4
RaspberryPi4 上で、port 81 でwebサーバー起動しておく. main.go の port を81へ
pi@raspberrypi:~/github.com/ddddddO/packemon/cmd/debugging/http-server $ sudo go run main.go
RaspberryPi4 上で、sudo tshark -i wlan0 -T fields -E header=y -E separator=/t -e eth.src -e ip.src -e eth.dst -e ip.dst -Y 'tcp.port==81'
以下、USBデバッグでのスマホ上の App のボタン押下で、 RaspberryPi4 のtcp:81 へコネクション確立できたコードの一部
code:a.kt
private class SocketWorker(): Runnable {
@WorkerThread
override fun run() {
Log.d("in launch", "start")
val socket = Socket("192.168.10.110", 81)
val stream = socket.getOutputStream()
stream.writer().write("Sending!!")
stream.flush()
socket.close()
Log.d("in launch", "end")
}
}
@Composable
private fun SendButton(
onClick: () -> Unit,
modifier: Modifier = Modifier,
) {
var count by remember { mutableIntStateOf(0) }
Button(
onClick = {
count++
count++
Log.d("Counted!!", count.toString())
Executors.newSingleThreadExecutor().execute(SocketWorker())
},
modifier = modifier,
) {
Text(text = count.toString())
}
}
キャプチャは src / dst MAC も見たい。pcap lib なのが Java / Kotlin にある?
いや、スマホでキャプチャは今要らない。しんどそうだし
android studio 外付けssd PC本体のディスク容量を節約したい、メモ
一旦、Project は以下外付けSSD配下に格納していく
D:\AndroidStudioProjects\