【发布时间】:2022-08-16 09:42:48
【问题描述】:
我在下面的 Kotlin 中有简单的 TCP/IP 客户端代码。 此代码有效。 客户端打开套接字并永远循环,首先向服务器发送消息,然后永远等待服务器的响应。 我知道这段代码不是很好,永远循环,保持套接字连接打开等,但它现在只是用于测试目的。
fun tcp_client() {
thread {
val client1 = Socket(SERVER_IP_ADDRESS, SERVER_IP_PORT)
val output1 = PrintWriter(client1.getOutputStream(), true)
val input1 = BufferedReader(InputStreamReader(client1.inputStream))
while (true) {
output1.println(str_user_text)
str_rcvd_data = input1.readLine()
}
}
client1.close()
}
该行:
str_rcvd_data = input1.readLine()
永远等待服务器响应。
我的问题:是否可以修改此代码以便客户端执行不是永远等待服务器响应?像这样的东西:
If (server data received) {
// process the data
} else {
// do something else for now and check again in a short while
}
在此先感谢您的任何建议
加勒特
-
您正在寻找的关键字是“非阻塞”。 Does the answer here help?您还可以尝试查找基于协程的套接字实现,例如github.com/TheEvilRoot/async-coroutines-socket。