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 - 恩典之路

沒有留言:
張貼留言