Exemple #1
0
 void OnData(IAsyncResult iar)
 {
     try
     {
         Packet lp        = (Packet)iar.AsyncState;
         int    bytesread = socket.EndReceive(iar);
         Packet read      = Packet.Decode(lp.EncodedData, bytesread);
         if (GotPacket != null)
         {
             GotPacket(read);
         }
         WaitSocket();
     }
     catch (ObjectDisposedException)
     {
         System.Diagnostics.Debugger.Log(0, "1", "\nSocket closed\n");
     }
     catch (SocketException e)
     {
         System.Diagnostics.Debugger.Log(0, "1", e.Message);
     }
 }
        void OnData(IAsyncResult iar)
        {
            Packet lp = (Packet)iar.AsyncState;

            try
            {
                // read in the result
                int    bytesread = client[lp.From].EndReceive(iar);
                Packet read      = Packet.Decode(lp, bytesread);
                read.From = lp.From;

                if (GotPacket != null)
                {
                    GotPacket(read);
                }

                // wait for new data
                WaitSocket(lp.From);
            }
            catch (ObjectDisposedException)
            {
                System.Diagnostics.Debugger.Log(0, "1", "\nOnData: Socket has been closed\n");
            }
            catch (SocketException se)
            {
                if (se.ErrorCode == 10054)
                {
                    System.Diagnostics.Debugger.Log(0, "1", "\nClient " + lp.From + ": connection reset by peer\n");
                    // reclaim socket
                    client[lp.From] = null;
                }
                else
                {
                    System.Diagnostics.Debugger.Log(0, "1", se.Message);
                }
            }
        }