public void SendingIniPackage(Person LocalPerson) { byte[] MainPackage = new byte[26], buf; MainPackage[4] = 3; string[] Strings = new string[4]; foreach (var i in Dns.GetHostAddresses(Dns.GetHostName())) { if (i.AddressFamily == AddressFamily.InterNetwork) { Strings = i.ToString().Split('.'); } } FileTools.Log($"Sended ip:{Strings[0]}.{Strings[1]}.{Strings[2]}.{Strings[3]}"); string LocalAddrLast = Strings[3]; String Addr; UdpClient Client = new UdpClient(); int Lenght = Dns.GetHostAddresses(Dns.GetHostName()).Length; string s = Dns.GetHostAddresses(Dns.GetHostName())[Lenght - 1].MapToIPv4().ToString(); for (int i = 1; i < 255; i++) { Strings[3] = i.ToString(); Addr = Strings[0] + "." + Strings[1] + "." + Strings[2] + "." + Strings[3]; if (Addr == s) { continue; } MainPackage[0] = byte.Parse(Strings[0]); MainPackage[1] = byte.Parse(Strings[1]); MainPackage[2] = byte.Parse(Strings[2]); MainPackage[3] = byte.Parse(LocalAddrLast); MainPackage[4] = 3; MainPackage[5] = LocalPerson.ID; buf = BitConverter.GetBytes(LocalPerson.X); ToolsClass.CopyFromArrayToArry(ref MainPackage, ref buf, 6, 0, 4); buf = BitConverter.GetBytes(LocalPerson.Y); ToolsClass.CopyFromArrayToArry(ref MainPackage, ref buf, 10, 0, 4); buf = BitConverter.GetBytes(LocalPerson.XSpeed); ToolsClass.CopyFromArrayToArry(ref MainPackage, ref buf, 14, 0, 4); buf = BitConverter.GetBytes(LocalPerson.YSpeed); ToolsClass.CopyFromArrayToArry(ref MainPackage, ref buf, 18, 0, 4); buf = BitConverter.GetBytes(-1); ToolsClass.CopyFromArrayToArry(ref MainPackage, ref buf, 22, 0, 4); Client.Send(MainPackage, MainPackage.Length, new IPEndPoint(IPAddress.Parse(Addr), 7777)); } FileTools.Log("Ini package sended"); Client.Close(); }
static byte[] ConvertPackageToArray(PersonNetDataPackage Package) { byte[] MainPackage = new byte[37], buf; if (Package.IsNewPerson) { MainPackage[4] = 0; } else { MainPackage[4] = 2; } buf = BitConverter.GetBytes(Package.PersonID); ToolsClass.CopyFromArrayToArry(ref MainPackage, ref buf, 5, 0, 4); buf = BitConverter.GetBytes(Package.X); ToolsClass.CopyFromArrayToArry(ref MainPackage, ref buf, 9, 0, 4); buf = BitConverter.GetBytes(Package.Y); ToolsClass.CopyFromArrayToArry(ref MainPackage, ref buf, 13, 0, 4); buf = BitConverter.GetBytes(Package.XSpeed); ToolsClass.CopyFromArrayToArry(ref MainPackage, ref buf, 17, 0, 4); buf = BitConverter.GetBytes(Package.YSpeed); ToolsClass.CopyFromArrayToArry(ref MainPackage, ref buf, 21, 0, 4); buf = BitConverter.GetBytes(Package.AnimAddr); ToolsClass.CopyFromArrayToArry(ref MainPackage, ref buf, 25, 0, 4); buf = BitConverter.GetBytes(Package.AnimLenght); ToolsClass.CopyFromArrayToArry(ref MainPackage, ref buf, 29, 0, 4); buf = BitConverter.GetBytes(Package.BulletCurner); ToolsClass.CopyFromArrayToArry(ref MainPackage, ref buf, 33, 0, 4); return(MainPackage); }
static void SendPersonList(object ob) { IPAddress Addr = IPAddress.Parse((string)((object[])ob)[0]); List <Person> ls = (List <Person>)((object[])ob)[1]; TcpClient Sender = new TcpClient(); for (int i = 0; i < 128; i++) { try { Sender.Connect(Addr, 7778); break; } catch { } } if (!Sender.Connected) { return; } Sender.GetStream().Write(BitConverter.GetBytes(ls.Count - 1), 0, 4); byte[] MainPackage = new byte[37], buf; string[] Strings = new string[4]; foreach (var i in Dns.GetHostAddresses(Dns.GetHostName())) { if (i.AddressFamily == AddressFamily.InterNetwork) { Strings = i.ToString().Split('.'); } } FileTools.Log($"Sended ip:{Strings[0]}.{Strings[1]}.{Strings[2]}.{Strings[3]}"); for (int i = 0; i < ls.Count - 1; i++) { MainPackage[0] = byte.Parse(Strings[0]); MainPackage[1] = byte.Parse(Strings[1]); MainPackage[2] = byte.Parse(Strings[2]); MainPackage[3] = byte.Parse(Strings[3]); MainPackage[4] = 0; buf = BitConverter.GetBytes((int)ls[i].ID); ToolsClass.CopyFromArrayToArry(ref MainPackage, ref buf, 5, 0, 4); buf = BitConverter.GetBytes(ls[i].X); ToolsClass.CopyFromArrayToArry(ref MainPackage, ref buf, 9, 0, 4); buf = BitConverter.GetBytes(ls[i].Y); ToolsClass.CopyFromArrayToArry(ref MainPackage, ref buf, 13, 0, 4); buf = BitConverter.GetBytes(ls[i].XSpeed); ToolsClass.CopyFromArrayToArry(ref MainPackage, ref buf, 17, 0, 4); buf = BitConverter.GetBytes(ls[i].YSpeed); ToolsClass.CopyFromArrayToArry(ref MainPackage, ref buf, 21, 0, 4); buf = BitConverter.GetBytes(8); ToolsClass.CopyFromArrayToArry(ref MainPackage, ref buf, 25, 0, 4); buf = BitConverter.GetBytes(8); ToolsClass.CopyFromArrayToArry(ref MainPackage, ref buf, 29, 0, 4); buf = BitConverter.GetBytes(-1); ToolsClass.CopyFromArrayToArry(ref MainPackage, ref buf, 33, 0, 4); Sender.GetStream().Write(MainPackage, 0, MainPackage.Length); } FileTools.Log("Person list sended"); Sender.Close(); }