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