您好,登錄后才能下訂單哦!
在目前一些桌面端展示系統的應用中,需要多個子系統窗口進行信息交換,對于部署在同一臺電腦上的各個子系統,可以通過集成windows系統的消息傳遞方式進行消息傳遞,但是假如將各個子系統部署在不同的電腦上,這種實現方式就有一定的局限性,要涉及到網絡中的不同電腦進行通信,.net提供了可以建一個小的http服務器,可以綁定計算機的端口進行通信,且提供了異步的實現方式,能實現無阻塞的消息通信。
具體實現: //啟動一個監聽, 并綁定端口,MSDN有詳細參數說明 public bool StartListener(string[] prefixes) { bool isSuccess = false; if (HttpListener.IsSupported) { HttpListener listener = new HttpListener(); foreach (string s in prefixes) { listener.Prefixes.Add(s); } listener.Start(); var result = listener.BeginGetContext(new AsyncCallback(ListenerCallback), listener); isSuccess = true; //Console.WriteLine("Waiting for request to be processed asyncronously."); //result.AsyncWaitHandle.WaitOne(); //listener.Close(); } return isSuccess; } public void StopListener() { if (listener != null) { if (listener.IsListening) { listener.Stop(); } listener.Close(); } } //異步接收數據,并進行下一次的 private void ListenerCallback(IAsyncResult result) { HttpListener listener = (HttpListener)result.AsyncState; HttpListenerContext context = listener.EndGetContext(result); HttpListenerRequest request = context.Request; HttpListenerResponse response = context.Response; response.ContentType = "text/plain"; System.IO.Stream output = response.OutputStream; string responseString = "true"; try { if (MessageAction != null) { System.IO.Stream inputStream = request.InputStream; string resStr = string.Empty; if (inputStream.CanRead) { byte[] bytes = new byte[request.ContentLength74]; int numBytesToRead = (int)request.ContentLength74; inputStream.Read(bytes, 0, numBytesToRead); inputStream.Close(); resStr = Encoding.UTF8.GetString(bytes); } MessageAction(resStr); } } catch (Exception ex) { responseString = "false"; } byte[] buffer = System.Text.Encoding.UTF8.GetBytes(responseString); response.ContentLength74 = buffer.Length; output.Write(buffer, 0, buffer.Length); output.Close(); result = listener.BeginGetContext(new AsyncCallback(ListenerCallback), listener); }
將建立好的代碼集成到應用程序里,使用.Net的webclient就可以進行消息的操作。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。