コード例 #1
0
        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();
        }