private void ProcessReceive()
{
// If we do not get a success code here, we have a bad socket
if (ReadEventArgs.SocketError != SocketError.Success)
{
HandleSocketError(ReadEventArgs.SocketError);
return;
}
// Force disconnect (Specifically for Gpsp, whom will spam empty connections)
if (ReadEventArgs.BytesTransferred == 0)
{
Close();
return;
}
else
{
// Fetch our message as a string from the Buffer
BufferDataToken token = ReadEventArgs.UserToken as BufferDataToken;
RecvMessage.Append(
Encoding.UTF8.GetString(
ReadEventArgs.Buffer,
token.BufferOffset,
ReadEventArgs.BytesTransferred
)
);
// Process Message
string received = RecvMessage.ToString();
if (received.EndsWith("final\\") || received.EndsWith("\x00\x00\x00\x00"))
{
// tell our parent that we recieved a message
RecvMessage.Clear(); // Clear old junk
DataReceived(received);
}
}
// Begin receiving again
BeginReceive();
}