private void DoReceiveFrom(IAsyncResult iar)
{
try
{
//Get the received message.
Socket recvSock = (Socket)iar.AsyncState;
int msgLen = recvSock.EndReceiveFrom(iar, ref endPoint);
char[] localMsg = new char[msgLen];
Array.Copy(buffer, localMsg, msgLen);
//Start listening for a new message.
udpSock.BeginReceiveFrom(buffer, 0, buffer.Length, SocketFlags.None, ref endPoint, DoReceiveFrom, udpSock);
string message = new string(localMsg);
if (callbackSet)
udpCallback(message);
}
catch (ObjectDisposedException)
{
//expected termination exception on a closed socket.
// ...I'm open to suggestions on a better way of doing this.
}
}