I have a client socket receiving messages in xml that is working normally but in some cases it is necessary for the server to send me more than one message regarding a request, and these messages are sent in a very small time interval something like hundredths and then these messages all come together which makes it difficult to interpret the client. Is it possible for the socket to receive these separate messages? My socket is asynchronous.
private static void ReceiveCallback(IAsyncResult ar)
{
try
{
// Retrieve the state object and the client socket
// from the asynchronous state object.
StateObject state = (StateObject)ar.AsyncState;
Socket client = state.workSocket;
// Read data from the remote device.
int bytesRead = client.EndReceive(ar);
if (bytesRead > 0)
{
// There might be more data, so store the data received so far.
//state.sb.Append(Encoding.ASCII.GetString(state.buffer, 0, bytesRead));
String received = Encoding.ASCII.GetString(state.buffer, 0, bytesRead);
if (received == keepAliveMsg)
{
Console.WriteLine("[" + DateTime.Now.ToString() + "] - " + "Keep Alive received.");
}
else
{
sendToXMLController(received);
//Console.WriteLine("[" + DateTime.Now.ToString() + "] - " + received + "\n");
}
// Get the rest of the data.
client.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0,
new AsyncCallback(ReceiveCallback), state);
}
else {
// All the data has arrived; put it in response.
if (state.sb.Length > 1)
{
response = state.sb.ToString();
}
// Signal that all bytes have been received.
receiveDone.Set();
}
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
}