动画

Posted by アライさん on 2019年07月21日

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) {

}
}

}