【发布时间】:2023-04-09 02:50:01
【问题描述】:
我有套接字编程,我正在为每个客户端创建新线程并使用具有多线程的应用程序,如下所示。
fun ClientHandler() {
try {
var count = 0
var serverSocket = ServerSocket(5000)
while (true) {
val socket: Socket = serverSocket!!.accept()
count++
socket.reuseAddress = true
_log("${socket.remoteSocketAddress} Client Connected. Connected client count is $count")
Thread(ServerThread(socket)).start() //Here i'm creating Threads.
}
} catch (e: ConnectException) {
_logEx("UnExpected connection error", e)
} catch (ex: IOException) {
_logEx("ClientHandler", ex)
} catch (e: Exception) {
_logEx("ServerSocketHandler ", e)
}
}
internal inner class ServerThread(socket: Socket) : Runnable {
private val client: Socket = socket
private val reader: Scanner = Scanner(client.getInputStream())
private val writer = PrintStream(client.getOutputStream())
private var receiveString: String = ""
override fun run() {
try {
while(reader.hasNextLine()){
receiveString = reader.nextLine() ?: ""
_log("Message received: " + receiveString)
if (receiveString != null && receiveString != "") {
checkMessage(receiveString, writer,client)
}
}
} catch (ex: Exception) {
_log("Cannot read the message. Please try again")
//_log(ex.localizedMessage)
val spReq = Error()
spReq.sendErrorMsg(writer, "Cannot read the message. Please try again",client)
}
}
}
更新 我也添加了 ServerThread 代码部分。
如何关注他们并获得他们的状态?
【问题讨论】:
-
跟踪他们是什么意思?定期检查他们的状态?检查他们是否被杀?
-
@DiegoMarcher 是的,我想获得他们的状态?(活着、睡觉或被杀)以及他们有多少?
-
然后我只需创建一个包含所有已创建线程的 Map 以供进一步参考
-
@DiegoMarcher 你能举个例子吗?我是 Kotlin 的新手
-
我会把它作为答案发布