protected virtual void HandleConnection(object socket) { listenerSignal.Set(); try { Socket handler = (Socket)socket; while (true) { receiveHandle = new SocketHandle(handler); while (true) { int bytesReceived = receiveHandle.socket.Receive(receiveHandle.buffer); receiveHandle.AppendBytes(bytesReceived); if (receiveHandle.EndOfMessage() == "<EOF>") { break; } } EventHandler <MessageEventArgs> messageReceived = MessageReceived; if (messageReceived != null) { messageReceived.Invoke(null, new MessageEventArgs(receiveHandle.fullBuffer, receiveHandle.endOfMessage)); } } } catch (SocketException ex) { Console.WriteLine(ex.ToString()); throw ex; } }
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; } }