public static void send_to(IPAddress target_url,Packet packet) { Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); s.Connect(new IPEndPoint(target_url, 2333)); s.Send(packet.to_bytes()); s.Close(); if (DEBUG) Console.WriteLine("[LOG][{0}]: send a {1} packet which uuid is {2} to {3}",DateTime.Now.ToString(),Encoding.UTF8.GetString(packet.get_command_string()),Encoding.UTF8.GetString(packet.Packet_uuid) ,target_url.ToString()); }
public static bool __confirm_packet(Packet confirmation_packet) { if (utils.Utils.bytes2int(confirmation_packet.Version) != 0x0209) throw new packet.VersionExcepion(); if (command_list.Contains(Encoding.UTF8.GetString(confirmation_packet.get_command_string())) == false) throw new packet.CommandException(); //byte[] check_bytes = Encoding.UTF8.GetBytes(utils.HashHelper.Hash_SHA_256(Encoding.UTF8.GetString(confirmation_packet.Payload))); SHA256 sha256 = new SHA256CryptoServiceProvider(); byte[] check_bytes = sha256.ComputeHash(confirmation_packet.Payload); byte[] check_bytes_8 = new byte[8]; Buffer.BlockCopy(check_bytes, 0, check_bytes_8, 0, 8); if (Encoding.UTF8.GetString(check_bytes_8) != Encoding.UTF8.GetString(confirmation_packet.Checksum)) { throw new packet.ChecksumExcepiton(); } return true; }
public void __handle_packet(IPAddress route_address, Packet now_packet) { byte[] command = now_packet.get_command_string(); if (Encoding.UTF8.GetString(command) == "POST") { JsonObject decrypt_post = JsonConvert.DeserializeObject<JsonObject>(Encoding.UTF8.GetString(Utils.json_decrypt(SECRET_KEY.secret_key, now_packet.Payload))); this.__send_get_data_packet(route_address, decrypt_post.uuid); } else if (Encoding.UTF8.GetString(command) == "ACK") { JsonObject decrypt_ack = JsonConvert.DeserializeObject<JsonObject>(Encoding.UTF8.GetString(Utils.json_decrypt(SECRET_KEY.secret_key, now_packet.Payload))); if (DEBUG) { Console.WriteLine("[LOG][{0}]: the data packet {1} has been received by {2}!", DateTime.Now.ToString(), decrypt_ack.uuid, route_address); } if (__caching_dict.ContainsKey(Encoding.UTF8.GetString(decrypt_ack.uuid))) { this.__caching_dict.Remove(Encoding.UTF8.GetString(decrypt_ack.uuid)); } } else if (Encoding.UTF8.GetString(command) == "GETDATA") { JsonObject decrypt_getdata = JsonConvert.DeserializeObject<JsonObject>(Encoding.UTF8.GetString(Utils.json_decrypt(SECRET_KEY.secret_key, now_packet.Payload))); this.__sending_queue.Enqueue(Tuple.Create<IPAddress, Packet>(route_address, this.__caching_dict[Encoding.UTF8.GetString(decrypt_getdata.uuid)])); } else if (Encoding.UTF8.GetString(command) == "DATA") { JsonDataObject decrypt_data = JsonConvert.DeserializeObject<JsonDataObject>(Encoding.UTF8.GetString(Utils.json_decrypt(SECRET_KEY.secret_key, now_packet.Payload))); Console.WriteLine("to do functions"); Console.WriteLine(decrypt_data.command); if(decrypt_data.command == "get_plane_number") { JsonDataObject js = new JsonDataObject(); js.command = "plane_number"; Dictionary<string, string> d = new Dictionary<string, string>(); d.Add("plane_state", "all"); d.Add("plane_number", "5"); js.options = d; IPAddress ip = IPAddress.Parse(ROUTE_ADDRESS.route_address); send_data_packet(ip, js); } if(decrypt_data.command == "get_plane_location") { JsonDataObject js = new JsonDataObject(); js.command = "plane_location"; Dictionary<string, string> d = new Dictionary<string, string>(); d.Add("plane_id", "6077"); d.Add("plane_location_x", "126.632837"); d.Add("plane_location_y", "45.744368"); d.Add("plane_location_z", "3"); js.options = d; IPAddress ip = IPAddress.Parse(ROUTE_ADDRESS.route_address); send_data_packet(ip, js); } } }