新聞中心

        EEPW首頁 > 手機與無線通信 > 設計應用 > 基于Windows Mobile平臺的高速無線網絡的移動解決方案

        基于Windows Mobile平臺的高速無線網絡的移動解決方案

        作者: 時間:2011-12-26 來源:網絡 收藏

        本文引用地址:http://www.104case.com/article/155397.htm

         如果是發送到本機上,還可以使用“.”代表本機名稱。具體的引用方法可以在初始化消息隊列時設置,也可以通過設置消息隊列的Path屬性來實現。如果在初始化時引用消息隊列,那么消息隊列必須存在于系統中,否則會產生錯誤。在程序中可以實現消息隊列的創建。

          在初始化時引用消息隊列的代碼如下:

          MessageQueue Mq=new MessageQueue(“.private$mq”);

          通過Path屬性引用消息隊列的代碼:

          MessageQueue Mq=new

          MessageQueue();

          Mq.Path=”.private$mq”;

          如果消息隊列不存在,可以使用 Create方法可在計算機上創建隊列,實現代碼如下:

          System.Messaging.MessageQueue.

          Create(@.private$mq);

         發送消息

          應用程序引用消息隊列后,就可以進行發送和接收消息操作。發送的消息可以分為簡單消息和復雜消息,簡單消息類型就是常用的數據類型,例如整型、字符串等數據;復雜消息的數據類型通常對應于系統中的復雜數據類型,例如結構體和類對象等。

          簡單消息的發送示例如下:

          Mq.Send(1000); //發送整型數據

          1000

          Mq.Send(“This is a test

          message!”); //發送字符串

          復雜消息的發送和簡單消息的發送大同小異,只是發送時,通常不是直接給出發送的消息內容,而是代表發送消息內容的變量。下面的代碼分別通過消息變量和復雜數據類型變量發送一條復雜消息。

          下面的代碼中發送的消息由消息變量表示:

          Message Msg;

          Msg=new Message(“A Complex

          Message!”);

          Msg.Label=”This is the label”;

          Msg.Priority=MessagePriority.High; Mq.Send(Msg);

          下面的代碼中發送的消息由復雜數據類型變量表示,Customer為自定義的一個類:

          Customer customer = new

          Customer();

          customer.LastName = Copernicus;

          customer.FirstName = Nicolaus;

          Mq.Send(customer);

         接收消息

          接收消息相比發送消息要復雜一些。接收消息有兩種方式:通過Receive方法接收消息同時永久性地從隊列中刪除消息;通過Peek方法從隊列中取出消息而不從隊列中移除該消息。如果知道消息的標識符(ID),還可以通過ReceiveById方法和PeekById方法完成相應的接收消息操作。

          接收消息的代碼如下:

          Mq.Receive(); //或

          Mq.ReceiveById(ID);

          Mq.Peek(); // 或

          Mq.PeekById(ID);

          閱讀消息

          只有通過根據通信雙方的約定將接收到的消息中信息提取出來,傳遞的消息才有價值,因此接收到消息以后還必須能讀出消息中包含的信息。在發送端的應用程序發送的消息和消息隊列中的傳輸消息的格式不同,因而發送端的應用程序發送出去的消息經過序列化以后才發送給了消息隊列,這一過程由系統自動完成了,程序開發人員不必為此編寫代碼,然而在接收到消息后就需要對接收的消息進行反序列化。

          消息的反序列化可以通過Visual Studio和.NET Framework附帶的三個預定義的格式化程序來完成:XMLMessageFormatter對象(MessageQueue組件的默認格式化程序設置)、BinaryMessageFormatter對象、ActiveXMessageFormatter對象。由于后兩者格式化后的消息通常不能被用戶閱讀,所以經常采用XMLMessageFormatter對象對接收的消息進行反序列化。

          使用XMLMessageFormatter對象反序列化消息的代碼如下:

          string[] types = { System.String };

          ((XmlMessageFormatter)mq.Formatter).TargetTypeNames = types;

          Message m=mq.Receive(new

          TimeSpan(0,0,3));

          將接收到的消息傳送給消息變量以后,通過消息變量m的Body屬性就可以讀出消息了:

          MessageBox.Show((string)m.Body);

          關閉消息隊列

          關閉消息隊列可以通過Close函數來實現,代碼如下:

          Mq.Close();

          結語

           為各行業客戶提供更加可靠便捷的。消息隊列技術保證設備與數據中心之間進行良好的通信。通過對 上,發送、接收和閱讀消息工作過程的講解說明消息隊列技術簡單實用。MSMQ技術的 通信系統已經在國內某大型客車企業生產追蹤系統中得到應用。


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 秦安县| 泽库县| 太仆寺旗| 大竹县| 宜春市| 乌拉特中旗| 怀集县| 读书| 平罗县| 友谊县| 监利县| 阿勒泰市| 鄂托克旗| 二连浩特市| 汨罗市| 铁岭市| 醴陵市| 田东县| 哈密市| 略阳县| 佛坪县| 孟津县| 嘉祥县| 松江区| 肥城市| 昌吉市| 乡城县| 南雄市| 柏乡县| 得荣县| 中超| 新兴县| 抚顺市| 汝阳县| 保山市| 明光市| 来宾市| 乐至县| 石景山区| 闸北区| 海宁市|