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); } } }