2009-03-25 2 views
1

Ну, как говорится в названии, как я могу обнаружить разрыв с «ReceiveAsync» со всеми другими сетевыми шаблонами .net, вы могли бы просто посмотреть, если вы получили 0 байт или если какое-либо исключение было брошено, однако это не кажется, чтобы быть правдой больше с этим рисунком ....net Обнаружение разъединения с ReceiveAsync

Мой первый возврат Recive 0 байт, но второй работы Вот почему им путать ....

+0

Как вы получаете данные? – strager

+0

С socket.ReceiveAsync – Peter

+0

@Petoj, Можете ли вы показать код? Из того, что я знаю, обратный вызов должен быть вызван с байтом, полученным с байтом 0. – strager

ответ

2

Это так же:

 void OnReceiveComplete(IAsyncResult iar) 
     { 
      try 
      { 
       int count = sock.EndReceive(iar); 
       if (count == 0) 
       { 
        Console.WriteLine("{0} closed by remote host", ID); 
        sock.Close(); 
       } 
       else 
       { 
        int total = Interlocked.Increment(ref totalBytes); 
        Console.WriteLine("{0} received {1} (total: {2})", 
         ID, buff[0], total); 
        StartReceive(); 
       } 
      } 
      catch (Exception x) 
      { 
       Console.WriteLine("{0} error from EndReceive: {1}", ID, x); 
      } 
     } 
+0

Не сокет автоматически закрывается при отключении? – strager

+0

Im используя ReceiveAsync не BeginReceive плохой пост какой-то код позже на этой неделе, когда я вырезал уродливые части – Peter

+0

Petoj - ах, извините. –

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