2015-05-12 3 views
1

Я использую приведенный ниже код для приема пакетов TCP из инструмента.Сбросить буфер после получения пакетов

while(socket.Connected) 
{ 
    var buffer = new byte[4096]; 
    int receiveLength = socket.Receive(buffer); 
    if (receiveLength != 0) 
    { 

    byte[] response= new byte[4096]; 
    ProcessPacketData(buffer, out response); 

    socket.Send(resposne); 
    } 
//Sleep(100); 
} 

При использовании этого кода, проблема, которую я облицовкой, для socket.Receive() Функция буфера не получая покраснел. Каждый раз при вызове socket.Receive (buffer) новые пакеты данных присоединяются к старым пакетам, содержащимся в буфере. Я хочу избежать этой ситуации. Есть ли решение для этого?

+0

Я думаю, вы должны попробовать это http://stackoverflow.com/questions/16696993/socket-tcp-c-sharp-how-to-clear-input-buffer – mut

ответ

1

Receive не принимается. Он получает любое количество байтов больше нуля. Используйте возвращаемое значение receiveLength, чтобы узнать, сколько фактически было получено и обрабатывать только эту сумму.

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