private void ReceiveCallBack(IAsyncResult result) { SocketHandle socketHandle = (SocketHandle)result.AsyncState; Socket client = socketHandle.socket; int bytesRead = socketHandle.socket.EndReceive(result); try { if (bytesRead > 0) { socketHandle.AppendBytes(bytesRead); if (client.Available > 0) { client.BeginReceive(socketHandle.buffer, 0, SocketHandle.BUFFER_SIZE, 0, new AsyncCallback(ReceiveCallBack), socketHandle); } else { if (socketHandle.fullBuffer.Length > 1) { EventHandler <AndroidMessageEventArgs> messageReceived = MessageReceived; if (messageReceived != null) { messageReceived.BeginInvoke(socketHandle, new AndroidMessageEventArgs(socketHandle.fullBuffer, socketHandle.EndOfMessage()), OnEventFinished, null); } socketHandle.Reset(); } } } } catch (SocketException ex) { Console.WriteLine(ex.ToString()); throw ex; } }
private void ReceiveCallBack(IAsyncResult result) { SocketHandle socketHandle = (SocketHandle)result.AsyncState; Socket server = socketHandle.socket; int bytesRead = socketHandle.socket.EndReceive(result); try { if (bytesRead > 0) { //socketHandle.byteStream.Write(socketHandle.buffer, 0, bytesRead); if (server.Available > 0) { server.BeginReceive(socketHandle.buffer, 0, SocketHandle.BUFFER_SIZE, 0, new AsyncCallback(ReceiveCallBack), socketHandle); } else { //if (socketHandle.byteStream.Length > 1) { EventHandler <MessageEventArgs> messageReceived = MessageReceived; if (messageReceived != null) { //messageReceived.Invoke(null, new MessageEventArgs(socketHandle.byteStream.ToArray())); // messageReceived.BeginInvoke(null, new MessageEventArgs(socketHandle.byteStream.ToArray(), socketHandle.endOfMessage), Receive, null); } socketHandle.Reset(); } } } } catch (Exception ex) { Console.WriteLine(ex.ToString()); throw ex; } }