Android 利用kotlin协程发送接收TCP详细demo
时间: 2023-09-15 12:17:57 浏览: 173
安卓的一个TCP连接发送接收的DEMO
以下是一个基于 Kotlin 协程的发送和接收 TCP 数据的示例:
```kotlin
import kotlinx.coroutines.*
import java.net.Socket
import java.nio.charset.StandardCharsets
fun main() = runBlocking {
val socket = Socket("localhost", 1234)
val input = socket.getInputStream()
val output = socket.getOutputStream()
val job = launch {
while (isActive) {
val buffer = ByteArray(1024)
val length = input.read(buffer)
if (length > 0) {
val message = String(buffer.sliceArray(0 until length), StandardCharsets.UTF_8)
println("Received message: $message")
}
}
}
launch {
var count = 0
while (isActive) {
count++
val message = "Message $count"
output.write(message.toByteArray(StandardCharsets.UTF_8))
output.flush()
println("Sent message: $message")
delay(1000)
}
}
job.join()
socket.close()
}
```
这个示例中,我们使用了两个协程,一个用于接收数据,另一个用于发送数据。我们通过 `Socket` 类连接到服务器,并获取其输入输出流。在接收协程中,我们使用一个循环来读取数据并将其转换为字符串,然后打印出来。在发送协程中,我们使用一个计数器来生成消息,并将其发送到服务器。我们还使用 `delay` 函数来定期发送消息。在最后,我们等待接收协程完成并关闭 `Socket`。
阅读全文