2014-02-21 6 views
0

Я знаю, что TCP не может потерять пакеты, потому что он потоковый. Я пытаюсь отправить (с nodejs) поток с 5 "52" пакетами. Формат его должен быть (1,52,1,52,1,52,1,52,1,52) где 1 - длина пакета. Я получаю тот же поток как в консоли C# Приложения на том же ПК, какой сервер. И на Android-устройстве с Java-приложением в локальной сети.Утерянные данные в потоке TCP

C# выход:
"1,52,1,52,1,52,1,52,1,52"

Но выход Java выглядит следующим образом:
«1,52,1 , 52,52,1,52,1,52"

Nodejs код:

b = new Buffer(1); 
b.writeInt8(1,0); 
this.sock.write(b); 
this.sock.write(String.fromCharCode(event)); //event == 52 

Java код:

while(true) 
{ 
    int a = in.read(); //in is an instance of InputStream 
    if(a!= -1)Log.v(getTag(),""+a); 
} 

У кого-нибудь есть идея, в чем проблема?
Заранее спасибо

/UPDATE: socket.bytesWritten возвращает 10, так что это не на стороне сервера.

+0

Какой тип объекта 'sock' (от' this.sock')? –

+0

Это объект сокета, полученный при установлении соединения с сервером от net.createServer (функция (сокет)) –

ответ

1

Ok. Это было плохо. Внутри приложения java у меня был потерянный обработчик подключений, который читал один байт, чтобы проверить, жив ли соединение, он берет его из потока.

Смежные вопросы