В моем приложении для Android мне нужно использовать Socket
для отправки и получения массивов байтов. Для удобства я хочу работать с Observable
, подключенным к Socket
.
Глядя в Интернете, я нашел этот код:
import rx.lang.scala.Observable
val s = Observable.using[Char,Socket](new Socket("10.0.2.2", 9002))(
socket => Observable.from[Char](Source.fromInputStream(socket.getInputStream).toIterable),
socket => Try(socket.close))
.subscribeOn(rx.lang.scala.schedulers.IOScheduler.apply)
val a = s.subscribe(println, println)
Он работает, но выводит по одному символу за раз, например, при отправке строки «привет», вывод:
I/System.out: h
I/System.out: e
I/System.out: l
I/System.out: l
I/System.out: o
I/System.out:
I/System.out: t
I/System.out: h
I/System.out: e
I/System.out: r
I/System.out: e
Но я хочу получать в свою подписку буферизованные массивы байтов. Как я могу этого добиться?
Bytes[]
? После полученияN
символов, после получения\n
или\r\n
или после закрытия сокета? (Или что-то совсем другое?) - person Sean Vieira   schedule 07.01.2017