public void SendData(String Data, String ClientId) { try { var _DataToSend = Helpers.DataCompressor.Zip(Data); if (_DataToSend.Length <= 32022) { PacketData xdata = new PacketData(); xdata.Packet_Type = (UInt16)PacketType.TYPE_Message; xdata.Packet_SubType = (UInt16)PacketTypeSubmessage.SUBMSG_MessageEnd; xdata.Packet_Size = (UInt16)Marshal.SizeOf(typeof(PacketData)); _DataToSend.CopyTo(xdata.Data, 0); xdata = xdata.SignPacket(SoftConfigs._LocalConfig.PrivateKey); Byte[] _Data = PacketFunctions.StructureToByteArray(xdata); SendMessage(ClientId, _Data, PacketType.TYPE_Message); } else { // ToDo } } catch (Exception ex) { // ToDo } }
void RequestNewConnectionCredentials(String _ClientId) { try { PacketData xdata = new PacketData(); xdata.Packet_Type = (UInt16)PacketType.TYPE_RequestCredentials; xdata.Packet_Size = (UInt16)Marshal.SizeOf(typeof(PacketData)); if (!_WorkerSockets.ContainsKey(_ClientId)) { return; } lock (_WorkerSockets) { String _ClientAddr = ((IPEndPoint)_WorkerSockets[_ClientId].UserSocket.RemoteEndPoint).Address.ToString(); Helpers.DataCompressor.Zip(_ClientAddr).CopyTo(xdata.Data, 0); Byte[] _Data = PacketFunctions.StructureToByteArray(xdata); if (_WorkerSockets[_ClientId].UserSocket.Connected) { SendMessage(_ClientId, _Data, PacketType.TYPE_RequestCredentials); } } } catch (Exception ex) { // ToDo } }
void SendRegisteredMessage(String ClientId) { try { PacketData xdata = new PacketData(); xdata.Packet_Type = (UInt16)PacketType.TYPE_Registered; xdata.Packet_Size = (UInt16)Marshal.SizeOf(typeof(PacketData)); xdata = xdata.SignPacket(SoftConfigs._LocalConfig.PrivateKey); Byte[] _Data = PacketFunctions.StructureToByteArray(xdata); SendMessage(ClientId, _Data, PacketType.TYPE_Registered); } catch { } }
void SendMessageOfClientDisconnect(String _ClientId) { try { PacketData xdata = new PacketData(); xdata.Packet_Type = (UInt16)PacketType.TYPE_ClientDisconnecting; xdata.Packet_Size = (UInt16)Marshal.SizeOf(typeof(PacketData)); Byte[] _Data = PacketFunctions.StructureToByteArray(xdata); SendMessage(_ClientId, _Data, PacketType.TYPE_ClientDisconnecting); } catch (Exception ex) { // ToDo } }
void SendCredentials(String ClientId) { try { PacketData xdata = new PacketData(); xdata.Packet_Type = (UInt16)PacketType.TYPE_MyCredentials; xdata.Packet_Size = (UInt16)Marshal.SizeOf(typeof(PacketData)); xdata = xdata.SignPacket(SoftConfigs._LocalConfig.PrivateKey); Byte[] _Data = PacketFunctions.StructureToByteArray(xdata); SendMessage(ClientId, _Data, PacketType.TYPE_MyCredentials); } catch (Exception ex) { // ToDo } }
void AssembleMessage(String _ClientID, Byte[] _Data) { try { PacketData IncomingData = new PacketData(); IncomingData = (PacketData)PacketFunctions.ByteArrayToStructure(_Data, typeof(PacketData)); if (IncomingData.Verify() == false) { return; } switch (IncomingData.Packet_SubType) { case (UInt16)PacketTypeSubmessage.SUBMSG_MessageStart: { if (_WorkerSockets.ContainsKey(_ClientID)) { _WorkerSockets[_ClientID].MessageBuilder = new List <byte>(IncomingData.Data); } } break; case (UInt16)PacketTypeSubmessage.SUBMSG_MessageBody: { _WorkerSockets[_ClientID].MessageBuilder.AddRange(IncomingData.Data); } break; case (UInt16)PacketTypeSubmessage.SUBMSG_MessageEnd: { _WorkerSockets[_ClientID].MessageBuilder.AddRange(IncomingData.Data); var _UncompressedData = Helpers.DataCompressor.Unzip(_WorkerSockets[_ClientID].MessageBuilder.ToArray()); var _JObj = JObject.Parse(_UncompressedData); if (_FinalizedMessages.ContainsKey(_ClientID)) { _FinalizedMessages[_ClientID].Add(_JObj); } else { _FinalizedMessages.Add(_ClientID, new List <JObject>() { _JObj }); } _WorkerSockets[_ClientID].MessageBuilder = new List <byte>(); PacketData _Responce = new PacketData(); _Responce.Packet_Type = (UInt16)PacketType.TYPE_MessageReceived; Helpers.DataCompressor.Zip((String)_JObj["id"]).CopyTo(_Responce.Data, 0); //_FinalizedMessages Byte[] _ResponceData = PacketFunctions.StructureToByteArray(_Responce); SendMessage(_ClientID, _ResponceData, PacketType.TYPE_MessageReceived); } break; } } catch { // ToDo } }