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()); }
public void RequsetGetListFriend(string email) { var ptc = new GetListFriendsRequestProtocol(); ptc.Email = email; var packet = new BasicPacket(); SendPacket(7, ptc); }
public void RequestGetGroup(string email) { var ptc = new GetGroupChatRequestProtocol(); ptc.Email = email; var packet = new BasicPacket(); SendPacket(13, ptc); }
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); }
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}"); }
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()); }
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()); }
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()); }
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()); }
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()); }
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()); }
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()); }
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(); }
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); }
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}"); }
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); } }
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())); } }