예제 #1
0
        static void test1()
        {
            Console.Write("PORT:");
            int port = int.Parse(Console.ReadLine());

            Console.WriteLine(ClientC.Access("127.0.0.1", 9840, port).Info);
            ClientC.Receive(ar => { Console.WriteLine(ar); });
            while (true)
            {
                string cmd = Console.ReadLine();
                if (cmd == "shutdown")
                {
                    break;
                }
                else if (cmd == "login")
                {
                    ClientC.Send(MessageTranslate.EncapsulationInfo(MessageContent.登录, MessageType.请求, "1501", "123"));
                }
                else if (cmd == "login1")
                {
                    ClientC.Send(MessageTranslate.EncapsulationInfo(MessageContent.登录, MessageType.请求, "0000", "123456"));
                }
                else
                {
                    ClientC.Send(cmd);
                }
            }
        }
예제 #2
0
        public bool Send(ushort mainCmd, ushort subCmd, byte[] datas)
        {
            bool val = false;

            if (!IsConnected)
            {
                return(val);
            }

            //byte[] sendData = MessageToByteArray(mainCmd, subCmd, datas);
            byte[] sendData = Package.ToArray(17408, mainCmd, subCmd, datas);

            _client.Send(sendData);
            return(true);
        }
예제 #3
0
        private void _batcher_OnBatched(IBatcher batcher, List <byte[]> data)
        {
            if (data != null && data.Any())
            {
                var list = new List <byte>();

                foreach (var item in data)
                {
                    list.AddRange(item);
                }

                _clientSocket.Send(list.ToArray());

                list.Clear();
            }
        }
예제 #4
0
 public bool Send(byte[] data, int offset, int len)
 {
     if (null != m_socket && 0 == m_socket.GetErrorNum() &&
         null != data && offset >= 0 && len > 0 && offset + len <= data.Length)
     {
         return(m_socket.Send(data, offset, len));
     }
     return(false);
 }
예제 #5
0
        public void StartClient(string address, ushort port, INetworkMediator netMediator)
        {
            networkMediator = netMediator;
            _socket.Connect(address, port);
            CancellationSource = new CancellationTokenSource();
            Task.Run(ReadNetwork, CancellationSource.Token);
            BMSByte buffer = new BMSByte();

            buffer.Append(new byte[] { 1 });
            _socket.Send(_socket.EndPoint, buffer);
        }
예제 #6
0
        /// <summary>
        /// Raised when the echo command is received by a client
        /// </summary>
        /// <param name='client'>
        /// Client.
        /// </param>
        /// <param name='echo'>
        /// Echo.
        /// </param>
        protected void OnEcho(IClientSocket client, ICommand echo)
        {
            EchoCommand request = (EchoCommand)echo;

            Console.Out.WriteLine("> Server received echo request, seq: " + request.Sequence);

            EchoCommand reply = new EchoCommand();

            reply.Reply    = true;
            reply.Sequence = request.Sequence;
            client.Send(reply);
        }
 public IResult Login(string id, string password)
 {
     lock (LOCK)
     {
         this.UserInfo = new User_Client(id);
         if (waitingRespond)
         {
             throw new Exception("产生过未上锁的异步请求");
         }
         this.waitingRespond = true;
         isSendSucceful      = true;
         clientSocket.Send(MessageTranslate.EncapsulationInfo(MessageContent.登录, MessageType.请求, id, password), ar => { if (ar == baseResult.Faild.ToString())
                                                                                                                        {
                                                                                                                            isSendSucceful = false;
                                                                                                                        }
                           });
         while (waitingRespond)
         {
             if (!isSendSucceful)
             {
                 waitingRespond = false; return(new Result(baseResult.Faild, "发送send失败"));
             }
         }
         //等待响应
         if (respondMessage["结果"] == baseResult.Successful.ToString())
         {
             this.UserInfo.UserState = UserState.已登录;
             UserInfo.IsPrerogative  = Boolean.Parse(respondMessage["权限"]);
             return(new Result(baseResult.Successful, respondMessage["权限"]));
         }
         return(new Result(baseResult.Faild, respondMessage["权限"]));
     }
 }
예제 #8
0
        protected void OnWhatTimeIsIt(IClientSocket client, ICommand command)
        {
            Console.Out.WriteLine(String.Format(
                                      "> Server received what time it is request from {0}",
                                      client
                                      ));

            String theTime           = DateTime.Now.TimeOfDay.ToString();
            WhatTimeIsItCommand wtit = (WhatTimeIsItCommand)command;

            wtit.TheTime = theTime;
            client.Send(wtit);
        }
예제 #9
0
        public void SendCommand(MessageType messageType, int pinNumber, bool signal)
        {
            // Note: potentially abstract this later
            var packetFragments = new List <IPacketFragment>()
            {
                new CommandPacketFragment(messageType),
                new PinNumberPacketFragment(pinNumber),
                new SignalPacketFragment(signal)
            };

            var packet = new ActuationPacket(packetFragments);

            _clientSocket.Send(packet);
        }
예제 #10
0
        protected void OnConnected(IClientSocket client)
        {
            // set it to asynchronous mode
            client.OnReceivedInvokeAsynchronously = true;

            System.Diagnostics.Debug.WriteLine(String.Format(
                                                   "Test Client Connected {0}",
                                                   client
                                                   ));
            EchoCommand echo = new EchoCommand();

            echo.Reply    = false;
            echo.Sequence = ++sequencer;
            client.Send(echo);
        }
예제 #11
0
        /// <summary>
        /// 发送数据
        /// </summary>
        /// <param name="msg"></param>
        internal void Send(RSocketMsg msg)
        {
            var data = ((RCoder)_RContext.Unpacker).Encode(msg);

            _client.Send(data);
        }
예제 #12
0
 private void SendOauth(string oauth)
 {
     BotLogger.LogDebug("[ >> Sending OAUTH ]");
     Socket.Send(IRCSymbols.FormatOAuth(oauth));
 }
예제 #13
0
 private void _batcher_OnBatched(IBatcher sender, byte[] data)
 {
     _client.Send(data);
 }