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(); }