2009-03-25 6 views
1

Eh bien comme le titre indique comment puis-je détecter une déconnexion avec "ReceiveAsync" avec tous les autres modèles de réseau. NET, vous pouvez simplement regarder si vous avez reçu 0 octets ou si une exception était jeter mais cela ne semblent être plus vrai avec ce modèle ....net Détecter la déconnexion avec ReceiveAsync

Mon premier retour de recive 0 octets mais les secondes œuvres thats pourquoi im confus ....

+0

Comment recevez-vous des données? – strager

+0

Avec socket.ReceiveAsync – Peter

+0

@Petoj, Pouvez-vous montrer du code? D'après ce que je sais, le rappel doit être appelé avec un nombre de octets-reçu de 0. – strager

Répondre

2

Il est tout de même:

 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

Le socket ne se ferme-t-il pas automatiquement lorsqu'une déconnexion se produit? – strager

+0

Im utilisant ReceiveAsync pas BeginReceive malade poster un peu de code plus tard cette semaine quand j'ai coupé les parties laides – Peter

+0

Petoj - ah, désolé. –

Questions connexes