Sockets 用于Java的Kotlin嵌套使用函数try with resource
我的目标是在try-catch块中自动关闭Sockets 用于Java的Kotlin嵌套使用函数try with resource,sockets,kotlin,kotlin-coroutines,outputstream,try-with-resources,Sockets,Kotlin,Kotlin Coroutines,Outputstream,Try With Resources,我的目标是在try-catch块中自动关闭Socket和OutputStream 在搜索和学习Java之后,我最终在Kotlin中使用了use{}。但是,嵌套的使用{}似乎无法避免: suspend fun print(): LoadingStatus { var status = LoadingStatus.LOADING withContext(Dispatchers.IO) { try { val printerSocket = S
Socket
和OutputStream
在搜索和学习Java之后,我最终在Kotlin中使用了use{}
。但是,嵌套的使用{}
似乎无法避免:
suspend fun print(): LoadingStatus {
var status = LoadingStatus.LOADING
withContext(Dispatchers.IO) {
try {
val printerSocket = Socket("192.168.x.xxx", 9100)
printerSocket.use { socket -> <- first use{}
socket.getOutputStream().use { <- second use{}
it.write("xxx".toByteArray())
status = LoadingStatus.DONE
}
}
} catch (e: IOException) {
Log.e("print()", "Printing Failed: please check your network")
status = LoadingStatus.ERROR
}
}
return status
}
suspend fun print():加载状态{
var状态=LoadingStatus.LOADING
withContext(Dispatchers.IO){
试一试{
val printerSocket=Socket(“192.168.x.xxx”,9100)
printerSocket.use{socket->在套接字及其输出流的这种特殊情况下,没有必要在套接字和输出流上使用,因为socket.getOutputStream()的契约规定:
关闭返回的OutputStream将关闭关联的套接字
()
因此,只要做到以下几点就足够了:
printerSocket.getOutputStream().use {
...
}
在套接字
及其输出流
的这种特殊情况下,无需在套接字
和输出流
上使用
,因为Socket.getOutputStream()的契约规定:
关闭返回的OutputStream将关闭关联的套接字
()
因此,只要做到以下几点就足够了:
printerSocket.getOutputStream().use {
...
}