2012-05-15 3 views
0

Мне нужно получить все сообщение (ответ), но socket.ReceiveBytes(); возвращает только часть сообщения. Я попытался зациклить его, но он терпит неудачу в тайм-ауте, когда байты не принимаются.Как читать все сообщение с помощью сокета Chilkat?

List<byte> lb = new List<byte>(); 
byte[] receivedMsg = socket.ReceiveBytes(); 
while (receivedMsg.Length > 0) 
{   
    lb.AddRange(receivedMsg); 
    receivedMsg = socket.ReceiveBytes(); 
} 

Итак, как я могу проверить, есть ли байт для чтения? Как я могу прочитать все сообщение?

ответ

0

С момента реализации Chilkat вы, вероятно, должны связаться с разработчиком. Но я нашел это, что могло бы помочь: http://www.cknotes.com/?p=302

В конечном счете, вам нужно знать, сколько нужно читать из сокета, чтобы составить целое сообщение. Например, если вышележащий протокол является portmapper, то вы знаете, что ожидаете сообщения в формате, который указывает RFC (http://tools.ietf.org/html/rfc1833.)

Если вы работаете ваш собственный протокол через соединение сокета, затем используйте метод в блоге Chilkat о размещении размера общего сообщения в первых 4 байтах.

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