// Handle Receiving Data public void socketReceiveHandler(IAsyncResult asyncResult) { receiveMessage = ""; try { bufferHandler socketBuffer = (bufferHandler)asyncResult.AsyncState; Socket handler = socketBuffer.WorkSocket; int bytesRead = handler.EndReceive(asyncResult); if (bytesRead > 0) { socketBuffer.WorkString.Append(Encoding.ASCII.GetString(socketBuffer.WorkBuffer, 0, bytesRead)); receiveMessage = socketBuffer.WorkString.ToString(); if (receiveMessage.Contains("<EOF>")) { // Console.WriteLine($"Client{clientNumber}:> Read {bytesRead} bytes from socket."); Console.WriteLine($"Client{clientNumber}:> Data Read: {receiveMessage}."); receiveDone.Set(); } else { handler.BeginReceive(socketBuffer.WorkBuffer, 0, bufferHandler.bufferSize, 0, new AsyncCallback(socketReceiveHandler), socketBuffer); } } } catch (Exception e) { Console.WriteLine(e.ToString()); } }
// Receive Data public void socketReceive(Socket handler) { clientMutex.WaitOne(); try { bufferHandler socketBuffer = new bufferHandler(); socketBuffer.WorkSocket = handler; handler.BeginReceive(socketBuffer.WorkBuffer, 0, bufferHandler.bufferSize, 0, new AsyncCallback(socketReceiveHandler), socketBuffer); receiveDone.WaitOne(); } catch (Exception e) { Console.WriteLine(e.ToString()); } finally { clientMutex.ReleaseMutex(); } }