예제 #1
0
        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;
            }
        }
예제 #2
0
        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;
            }
        }