У меня есть розетка, которая будет существовать долго.Клиент будет продолжать передавать запросы данных на мое серверное приложение через сокет.Запрос - это POST с двоичной полезной нагрузкой, которую нужно скопировать в байтовый массив, который мне нужно использовать для получения класса буфера протокола.
POST / HTTP/1.1
Host: 127.0.0.1:80
Accept-Encoding: identity
Content-Length: 423
Content-type: application/octet-stream
[PAYLOAD]
val out = new DataOutputStream(socket.getOutputStream())
val in = new BufferedReader(new InputStreamReader(socket.getInputStream()))
Есть идеи?
ОБНОВЛЕНИЕ - я получил временное решение с использованием УСТАРЕВШЕЙ Java-функции - DataInputStream.readLine.
Может кто-нибудь улучшить этот код?
val in = new DataInputStream(socket.getInputStream())
var n:Int = 0
var size:Int=0
while (n==0) {
var str=in.readLine
if(str==""){
n =1
}else{
val breaks=str.split(" ")
if(breaks(0).equals("Content-Length:"))size=breaks(1).toInt
}
}
var payload:Array[Byte]=new Array(size)
n=size-1
for(i <- 0 to n) payload(i)=in.readByte