Java中的套接字编程

时间:2011-06-11 21:43:27

标签: java network-programming

我正在实施基于我实验室编写的RFC的协议。我打算用Java来运行模拟。我不认为我可以使用对象序列化来传递消息,因为我希望消息可以与其他语言实现的其他系统互操作,我认为使用序列化是不可能的。

我可以在Java中使用哪些功能来与以不同语言实现的节点进行通信?

此外,大约有50种不同类型的消息可以发送和接收,每种消息都有不同的结构 例如:你好,再见,注册等。

每封邮件都包含一些需要处理的信息。我计划将每种消息类型实现为Java中的类。

最简单的方法是在接收节点结束时弄清楚发送节点发送了什么类型的消息?

Ex:作为接收者,我怎么知道刚刚给我发送消息的节点想要注册?

如果能得到一些好的设计模式的建议,我将不胜感激。

4 个答案:

答案 0 :(得分:3)

我建议您查看Thrift和Protocol Buffers。

答案 1 :(得分:2)

如您所述,序列化Java对象是两个Java进程之间通信的便捷方式,但不适用于非Java进程。对于这种类型的通信,我建议使用XML或JSON。这两者基本上都是符合规范的纯文本格式。大多数语言都提供了库,用于将本机类型转换为XML或JSON。

至于问题的第二部分,发送和接收系统必须就共同的消息格式/规范达成一致。例如,以下xml可以表示向发件人和收件人注册的意图:

<Command>REGISTER</Command>

答案 2 :(得分:2)

如果您希望进行原始套接字通信,可以根据需要轻松或复杂地进行。通信格式可以像发送表示消息类型的数字或例如XML一样简单。

然而,有很多系统已经为你做了这个。这样的示例是例如CorbaThrift,其可用于许多编程语言。

答案 3 :(得分:0)

我个人认为协议缓冲区将是最佳选择。