private void ReadCallback(IAsyncResult ar)
        {
            BasicPacket basicPacket = ar.AsyncState as BasicPacket;
            Socket      handler     = basicPacket.WorkingSocket;

            int bytesRead = handler.EndReceive(ar);
        }
        private List <byte[]> SplitPacket(byte[] data)
        {
            var result = new List <byte[]>();

            using (var stream = new MemoryStream(data))
            {
                using (var read = new BinaryReader(stream))
                {
                    while (true)
                    {
                        byte   opcode;
                        int    length;
                        byte[] dt;
                        try
                        {
                            opcode = read.ReadByte();
                            length = read.ReadInt32();
                            dt     = read.ReadBytes(length);
                        }
                        catch (Exception)
                        {
                            return(result);
                        }


                        result.Add(BasicPacket.ToByte(opcode, length, dt));
                        if (stream.Length <= 1)
                        {
                            return(result);
                        }
                    }
                }
            }
        }
        private void SendPacket(byte opcode, IProtocol protocol)
        {
            var packet = new BasicPacket();

            packet.Opcode = opcode;
            packet.Data   = protocol.ToBytes();
            _client.Client.Send(packet.ToBytes());
        }
Example #4
0
        public void RequsetGetListFriend(string email)
        {
            var ptc = new GetListFriendsRequestProtocol();

            ptc.Email = email;
            var packet = new BasicPacket();

            SendPacket(7, ptc);
        }
Example #5
0
        public void RequestGetGroup(string email)
        {
            var ptc = new GetGroupChatRequestProtocol();

            ptc.Email = email;
            var packet = new BasicPacket();

            SendPacket(13, ptc);
        }
Example #6
0
        private void AcceptCallback(IAsyncResult ar)
        {
            allDone.Set();

            Socket      mySocket = this.mySocket.EndAccept(ar);
            BasicPacket packet   = new BasicPacket(mySocket, bufferSize);

            mySocket.BeginReceive(packet.Buffer, 0, bufferSize,
                                  0, new AsyncCallback(ReadCallback), packet);
        }
Example #7
0
        private async Task SendPacket(BasicPacket packet)
        {
            Logger.Debug("Sending packet...");
            string packetstr = packet.Serialize();

            byte[] buffer = Encoding.UTF8.GetBytes(packetstr);
            await socket.SendAsync(buffer, buffer.Length);

            Logger.Debug($"Packet sent: {packetstr}");
        }
Example #8
0
        private void SendPacket(byte opcode, IProtocol protocol)
        {
            IsSending = true;
            var packet = new BasicPacket();

            packet.Opcode = opcode;
            packet.Data   = protocol.ToBytes();
            _client.Write(packet.ToBytes());
            IsSending = false;
        }
        public void ResponseGetListFriends(List <Account> listFriends)
        {
            var ptc = new GetListFriendsResponseProtocol();

            ptc.ListAccount = listFriends;
            var packet = new BasicPacket();

            packet.Opcode = 8;
            packet.Data   = ptc.ToBytes();
            _client.Client.Send(packet.ToBytes());
        }
        public void ResponseGetChatGroupHistory(List <ChatGroupMessage> messages)
        {
            var ptc = new HistoryChatGroupResponseProtocol();

            ptc.Messages = messages;
            var packet = new BasicPacket();

            packet.Opcode = 20;
            packet.Data   = ptc.ToBytes();
            _client.Client.Send(packet.ToBytes());
        }
        public void ResponseGetGroups(List <Group> groups)
        {
            var ptc = new GetGroupChatResponseProtocol();

            ptc.Groups = groups;
            var packet = new BasicPacket();

            packet.Opcode = 14;
            packet.Data   = ptc.ToBytes();
            _client.Client.Send(packet.ToBytes());
        }
Example #12
0
        public void RequestCreateAccount(Account account)
        {
            CreateAccountProtocol ptc = new CreateAccountProtocol();

            ptc.Account = account;
            BasicPacket packet = new BasicPacket();

            packet.Opcode = 1;
            packet.Data   = ptc.ToBytes();
            _client.Write(packet.ToBytes());
        }
        public void ResponseFriendNotInGroup(List <Account> accounts)
        {
            var ptc = new GetListFriendsResponseProtocol();

            ptc.ListAccount = accounts;
            var packet = new BasicPacket();

            packet.Opcode = 22;
            packet.Data   = ptc.ToBytes();
            _client.Client.Send(packet.ToBytes());
        }
Example #14
0
        public void SendGroupMessage(ChatGroupMessage message)
        {
            var ptc = new GroupMessageProtocol();

            ptc.message = message;
            var packet = new BasicPacket();

            packet.Opcode = 17;
            packet.Data   = ptc.ToBytes();
            _client.Write(packet.ToBytes());
        }
Example #15
0
        public void Logout(string email)
        {
            var ptc = new LogoutProtocol();

            ptc.Email = email;
            var packet = new BasicPacket();

            packet.Opcode = 99;
            packet.Data   = ptc.ToBytes();
            _client.Write(packet.ToBytes());
        }
        public void SendMessage(ChatMessage message)
        {
            var ptc = new MessageProtocol();

            ptc.Message = message;
            var packet = new BasicPacket();

            packet.Opcode = 9;
            packet.Data   = ptc.ToBytes();
            _client.Client.Send(packet.ToBytes());
        }
        public void ResponseUpdateAvatar(int isSuccess, string driveFileId)
        {
            var ptc = new UpdateAvatarResponseProtocol();

            ptc.IsSuccess   = isSuccess;
            ptc.DriveFileId = driveFileId;
            var packet = new BasicPacket();

            packet.Opcode = 6;
            packet.Data   = ptc.ToBytes();
            _client.Client.Send(packet.ToBytes());
        }
Example #18
0
        public void RequestUpdateAvatar(string email, string driveFileId)
        {
            var ptc = new UpdateAvatarRequestProtocol();

            ptc.Email       = email;
            ptc.DriveFileId = driveFileId;
            var packet = new BasicPacket();

            packet.Opcode = 5;
            packet.Data   = ptc.ToBytes();
            _client.Write(packet.ToBytes());
        }
        public void ResponseGetUserInGroup(string groupID, List <Account> accounts)
        {
            var ptc = new GetUserInGroupResponseProtocol();

            ptc.Accounts = accounts;
            ptc.GroupId  = groupID;
            var packet = new BasicPacket();

            packet.Opcode = 16;
            packet.Data   = ptc.ToBytes();
            _client.Client.Send(packet.ToBytes());
        }
Example #20
0
        public void RequestGetFriendNotInGroup(string email, string groupId)
        {
            var ptc = new GetFriendNotInGroupRequestProtocol();

            ptc.Email   = email;
            ptc.GroupId = groupId;
            var packet = new BasicPacket();

            packet.Opcode = 21;
            packet.Data   = ptc.ToBytes();
            _client.Write(packet.ToBytes());
        }
Example #21
0
        public void RequestGetHistoryGroupChat(string email, string groupId)
        {
            var ptc = new HistoryChatGroupRequestProtocol();

            ptc.Email   = email;
            ptc.GroupId = groupId;
            var packet = new BasicPacket();

            packet.Opcode = 19;
            packet.Data   = ptc.ToBytes();
            _client.Write(packet.ToBytes());
        }
        public void ResponseLogin(int isAccept, Account account)
        {
            var ptc = new LoginResponseProtocol();

            ptc.IsAccept = isAccept;
            ptc.Account  = account;
            var packet = new BasicPacket();

            packet.Opcode = 4;
            packet.Data   = ptc.ToBytes();
            _client.Client.Send(packet.ToBytes());
        }
Example #23
0
        public void RequestGetHistory(string personOne, string personTwo)
        {
            var ptc = new HistoryChatRequestProtocol();

            ptc.PersonOne = personOne;
            ptc.PersonTwo = personTwo;
            var packet = new BasicPacket();

            packet.Opcode = 11;
            packet.Data   = ptc.ToBytes();
            _client.Write(packet.ToBytes());
        }
        public void ResponseCreateAccount(int isSuccess, string message)
        {
            var ptc = new CreateAccountResponseProtocol();

            ptc.IsSuccess = isSuccess;
            ptc.Message   = message;
            var packet = new BasicPacket();

            packet.Opcode = 2;
            packet.Data   = ptc.ToBytes();
            _client.Client.Send(packet.ToBytes());
        }
        private void _server_DataReceived(object sender, Message e)
        {
            Console.WriteLine("Packet Weight : " + e.Data.Count() + " bytes");
            Thread thread = new Thread(delegate()
            {
                var tmp    = SimpleTcpAdapter.Convert(e.TcpClient);
                var packet = new BasicPacket();
                if (!packet.Parse(e.Data))
                {
                    var packets = SplitPacket(e.Data);
                    foreach (var pk in packets)
                    {
                        Thread.Sleep(500);
                        Thread t = new Thread(delegate()
                        {
                            var pack = new BasicPacket();
                            if (!pack.Parse(pk))
                            {
                                return;
                            }
                            var ptc = ProtocolFactory.CreateProtocol(pack.Opcode);
                            if (!ptc.Parse(Encoding.Unicode.GetString(pack.Data)))
                            {
                                return;
                            }
                            var handling  = HandleFactory.CreateHandle(pack.Opcode);
                            string toview = handling.Handling(ptc, tmp);
                            if (OnNewMessage != null)
                            {
                                OnNewMessage.Invoke(tmp, toview);
                            }
                        });
                        t.Start();
                    }

                    return;
                }
                var protocol = ProtocolFactory.CreateProtocol(packet.Opcode);
                if (!protocol.Parse(Encoding.Unicode.GetString(packet.Data)))
                {
                    return;
                }
                var handle    = HandleFactory.CreateHandle(packet.Opcode);
                string toView = handle.Handling(protocol, tmp);
                if (OnNewMessage != null)
                {
                    OnNewMessage.Invoke(tmp, toView);
                }
            });

            thread.Priority = ThreadPriority.Highest;
            thread.Start();
        }
Example #26
0
        public void RequestLogin(string email, string password)
        {
            var ptc = new LoginRequestProtocol();

            ptc.Email    = email;
            ptc.Password = password;
            var packet = new BasicPacket();

            packet.Opcode = 3;
            packet.Data   = ptc.ToBytes();
            _client.Write(packet.ToBytes());
        }
        private void AcceptCallback(IAsyncResult ar)
        {
            _allDone.Set();

            Socket listener = ar.AsyncState as Socket;
            Socket handler  = listener.EndAccept(ar);

            BasicPacket basicPacket = new BasicPacket()
            {
                WorkingSocket = handler
            };

            handler.BeginReceive(basicPacket.Buffer, 0, _bufferSize, 0, new AsyncCallback(ReadCallback), basicPacket);
        }
Example #28
0
        private async Task RealSend(BasicPacket packet)
        {
            if (client.State != WebSocketState.Open)
            {
                Logger.Error($"[Send] Invalid socket state: {client.State}");
                Disconnect();
                return;
            }

            string str = packet.Serialize();

            byte[] buffer = Encoding.UTF8.GetBytes(str);
            ArraySegment <byte> bufferSegment = new ArraySegment <byte>(buffer);
            await client.SendAsync(bufferSegment, WebSocketMessageType.Text, true, CancellationToken.None);

            Logger.Debug($"Packet sent {str}");
        }
Example #29
0
        private void _client_DataReceived(object sender, Message e)
        {
            var packet = new BasicPacket();

            if (!packet.Parse(e.Data))
            {
                return;
            }
            var protocol = ProtocolFactory.CreateProtocol(packet.Opcode);

            if (!protocol.Parse(Encoding.Unicode.GetString(packet.Data)))
            {
                return;
            }

            if (OnNewRecieve != null)
            {
                OnNewRecieve.Invoke(packet.Opcode, protocol);
            }
        }
Example #30
0
        private void ReadCallback(IAsyncResult ar)
        {
            BasicPacket packet      = ar.AsyncState as BasicPacket;
            Socket      ishikSocket = packet.WorkingSocket;

            int bytesRead = ishikSocket.EndReceive(ar);

            logger.Info("Bytes readed: " + bytesRead);

            packet.MemOry.Append(packet.Buffer.Take(bytesRead).ToArray());

            if (bytesRead == bufferSize)
            {
                // Read again
                ishikSocket.BeginReceive(packet.Buffer, 0, bufferSize, 0,
                                         new AsyncCallback(ReadCallback), packet);
            }
            else
            {
                // End

                logger.Info("Readed data: " + Encoding.ASCII.GetString(packet.MemOry.ToArray()));
            }
        }