| 
				 internal static extern bool AdjustTokenPrivileges(IntPtr htok, bool disall, 
        ref TokPriv1Luid newst, int len, IntPtr prev, IntPtr relen); 
        [DllImport("user32.dll", ExactSpelling = true, SetLastError = true)] 
        internal static extern bool ExitWindowsEx(int flg, int rea); 
        internal const int SE_PRIVILEGE_ENABLED = 0x00000002; 
        internal const int TOKEN_QUERY = 0x00000008; 
        internal const int TOKEN_ADJUST_PRIVILEGES = 0x00000020; 
        internal const string SE_SHUTDOWN_NAME = "SeShutdownPrivilege"; 
        internal const int EWX_LOGOFF = 0x00000000; 
        internal const int EWX_SHUTDOWN = 0x00000001; 
        internal const int EWX_REBOOT = 0x00000002; 
        internal const int EWX_FORCE = 0x00000004; 
        internal const int EWX_POWEROFF = 0x00000008; 
        internal const int EWX_FORCEIFHUNG = 0x00000010; 
        private static void DoExitWin(int flg) 
        { 
            bool ok; 
            TokPriv1Luid tp; 
            IntPtr hproc = GetCurrentProcess(); 
            IntPtr htok = IntPtr.Zero; 
            ok = OpenProcessToken(hproc, TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, ref htok); 
            tp.Count = 1; 
            tp.Luid = 0; 
            tp.Attr = SE_PRIVILEGE_ENABLED; 
            ok = LookupPrivilegeValue(null, SE_SHUTDOWN_NAME, ref tp.Luid); 
            ok = AdjustTokenPrivileges(htok, false, ref tp, 0, IntPtr.Zero, IntPtr.Zero); 
            ok = ExitWindowsEx(flg, 0); 
        } 
        //对客户机的控制应用API到此结束 
        private UdpClient udpClient; 
        private Thread waitThread; 
        public UdpThread() 
        { 
            udpClient = new UdpClient(new IPEndPoint(IPAddress.Any, GlobalConsts.LOCAL_WAIT_PORT)); 
            ThreadStart ts = new ThreadStart(udpWait); 
            waitThread = new Thread(ts); 
            waitThread.Start(); 
        } 
        public void close() 
        { 
            waitThread.Abort(); 
            udpClient.Close(); 
        } 
        private void udpWait() 
        { 			
				 |