示例#1
0
        static void invoke(byte[] bytes, PeopleData people)
        {
            var T   = people.GetType();
            var mis = T.GetMethods();

            byte mid    = bytes[0];
            int  offset = 1;


            foreach (var mi in mis)
            {
                if (IsValidMethod(mi))
                {
                    mid--;
                }
                if (mid == 0)
                {
                    var pis = mi.GetParameters();
                    if (pis.Length == 0)
                    {
                        mi.Invoke(people, null); break;
                    }
                    object[] objs = new object[pis.Length];
                    int      i    = 0;
                    foreach (var pi in pis)
                    {
                        objs[i++] = ByteToObj(pi.ParameterType, bytes, ref offset);
                    }
                    mi.Invoke(people, objs);
                    break;
                }
            }
        }
示例#2
0
        static void Main(string[] args)
        {
            PeopleData people    = new PeopleData();
            UdpClient  udpClient = new UdpClient(11001);

            try
            {
                //IPEndPoint object will allow us to read datagrams sent from any source.
                IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Any, 0);
                for (int i = 0; i < 6; i++)
                {
                    // Blocks until a message returns on this socket from a remote host.
                    Byte[] receiveBytes = udpClient.Receive(ref RemoteIpEndPoint);
                    invoke(receiveBytes, people);
                    people.ShowAge();
                }

                udpClient.Close();
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
            }
        }