Google 了一下,大都建議使用 ServiceController 或 WMI,但是因為兩者都需要 Remote Server 較高的執行權限才行,因無權限而放棄。尋問同事後,告知可以使用 HttpListener 來代替,也是另一個不錯的方法,做法如下:
Remote Server
// Remote Server 自定義一組 Port 供監視 string listenerURL = "http://192.168.1.10:2222"; HttpListener = listener = new HttpListener(); listener.Prefixes.Add(listenerURL); listener.Start(); // 固定回傳OK給詢問者 Thread listenerThread = new Thread(HandleRequest); listenerThread.Start(); ... private void HandleRequest() { while (listener.IsListening) { HttpListenerContext context = listener.GetContext(); HttpListenerResponse response = context.Response; byte[] buffer = Encoding.UTF8.GetBytes("OK"); response.ContentLength64 = buffer.Length; Stream st = response.OutputStream; st.Write(buffer, 0, buffer.Length); context.Response.Close(); } }
Client
// 可配合 Timer 定時 Request Remote Server HttpListener using (WebClient wc = new WebClient()) { wc.Encoding = Encoding.UTF8; string result = wc.DownloadString("http://192.168.1.10:2222"); ... }
參考連結:Peggy Yang - 恩典之路
沒有留言:
張貼留言