private void OnReceiveCallback(IAsyncResult iar) { ClientAsyncState asyncState = iar.AsyncState as ClientAsyncState; Socket clientSocket = asyncState.ClientSocket; int readCount = clientSocket.EndReceive(iar); TcpHeaderFactory headerFactory = asyncState.HeaderFactory; headerFactory.PumpData(asyncState.Buffer, 0, readCount); string message; while (headerFactory.TryProcess(out message)) { OnReceiveMessage(message); } clientSocket.BeginReceive(asyncState.Buffer, 0, BufferSize, SocketFlags.None, OnReceiveCallback, asyncState); }
public ClientAsyncState(Socket clientSocket) { this.m_ClientSocket = clientSocket; this.m_Buffer = new byte[BufferSize]; this.m_HeaderFactory = new TcpHeaderFactory(); }