新闻中心

EEPW首页 > 手机与无线通信 > 设计应用 > MSMQ技术在Windows Mobile系统通信中应用

MSMQ技术在Windows Mobile系统通信中应用

作者:尚尔明 沈阳市电信规划设计院 王长涛 沈阳建筑大学信息与控制工程学院 于天明 沈阳市华域建筑设计有限公司时间:2010-03-09来源:电子产品世界收藏

  接收

本文引用地址:http://www.eepw.com.cn/article/106704.htm

  接收相比发送要复杂一些。接收消息有两种方式:通过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();

  结语

  基于平台的高速无线网络为各行业客户提供更加可靠便捷的移动解决方案。消息队列技术保证移动设备与数据中心之间进行良好的。通过对平台上,发送、接收和阅读消息工作过程的讲解说明消息队列技术简单实用。基于技术的平台系统已经在国内某大型客车企业生产追踪系统中得到应用。

数字通信相关文章:数字通信原理


通信相关文章:通信原理




评论


相关推荐

技术专区

关闭