
在实际项目中经常会碰到不同系统之间的数据交换,有些是用 webservice。有些则是使用发 socket 消息的方式,将需要发送的消息组装成特定格式的字符串或 Xml 格式的文件,再通过 socket 编程发送到对方系统。本文主要讨论组装成定长字符串。
抽象任何一个定长消息包 (MsgPackage) 都是由一个或多个消息片 (MsgPiece) 组成。任何一个消息片都是由一个或多个消息域 (MsgField) 组成。消息域的属性有:域名、长度、值、如果值的长度小于定义的最大长度那值是靠左还是右对齐其余的是用什么字符填充。
工具代码
消息域类
1 | package socket.msg; |
报文消息片类
1 | package socket.msg; |
消息包类
1 | package socket.msg; |
实例
以下是使用上述封装做的简单实现例子:
定义一个消息由消息头和消息体组成,消息头由 name,sex,UAge,amt 等属性组成,消息体由 content 属性组成。
1 | package socket.msg.test; |
1 | package socket.msg.test; |
1 | package socket.msg.test; |
测试
1 | package socket.msg.test; |