LocalSocketAddress.Namespace :
ABSTRACT(Linux抽象命名空间,内存中)、FILESYSTEM(文件系统命名空间)、RESERVED(Android系统预定的命名空间,系统用,/dev/socket)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
| import android.net.LocalSocket import android.net.LocalSocketAddress import android.os.Handler import java.io.BufferedReader import java.io.IOException import java.io.InputStreamReader import java.io.PrintWriter
class LocalSocketClient { val timeout = 30000 val address = "com.alois.textsocket" private val localSocket = LocalSocket() private var printWriter: PrintWriter? = null private var bufferedReader: BufferedReader? = null
fun connect(): Boolean { try { localSocket.connect(LocalSocketAddress(address)) localSocket.soTimeout = timeout } catch (e: IOException) { return false } return true }
fun send(texts: Array<String>): Boolean { try { printWriter = PrintWriter(localSocket.outputStream) for (str in texts) { printWriter?.println(str) } printWriter?.flush() } catch (e: IOException) { return false }
return true }
fun recv(handler: Handler) { Thread(Runnable { try { bufferedReader = BufferedReader(InputStreamReader(localSocket.inputStream, "utf-8")) val text = bufferedReader?.readLine() val msg = handler.obtainMessage() msg.obj = text msg.sendToTarget() } catch (e: IOException) { } }).start() }
fun close() { try { localSocket.close() printWriter?.close() bufferedReader?.close() } catch (e: IOException) {
} }
}
|