我目前正在使用套接字在Java中编写一个简单的客户端/服务器。我希望服务器根据不同的“命令”和/或通过套接字从客户端接收的序列化对象做出决策,反之亦然。
类似的东西:
[Receive Command 'DoSomething' From Client]
[Call Method 'DoSomething' on the Server]
[Send result/status to Client]
etc...
是否存在使用普通套接字通信的流控制约定,也许是序列化?我应该在Java中使用RMI吗?
答案 0 :(得分:2)
我建议KryoNet使用任何RMI类型的东西,而不需要RMI的开销和它带来的不灵活性。
http://code.google.com/p/kryonet/
KryoNet做出了假设 将仅用于客户端/服务器 架构和KryoNet将是 用于网络的两侧。 因为KryoNet解决了一个具体的问题 问题,KryoNet API可以这样做 非常优雅。
Apache MINA项目类似于 KryoNet。 MINA的API水平较低 更复杂的是。甚至 最简单的客户端/服务器 需要更多代码才能编写。 MINA也没有与之集成 强大的序列化框架和 本质上不支持RMI。
Priobit项目是一个最小层 通过NIO。它提供TCP网络 类似于KryoNet,但没有 更高级别的功能。 Priobit 要求所有网络通信 发生在一个线程上。
Java Game Networking项目是一个 更高级别的库类似 KryoNet。 JGN没那么简单 一个API。
答案 1 :(得分:1)
没有。如果使用套接字创建客户端/服务器通信,则必须定义自己的协议以及适用于该协议的规则。
RMI可以通过执行特定的对象方法来简化此步骤。最近几年我听说过的是rmi服务器等的初始设置并不像以前那么难。
这是RMI tutorial你可能会发现有用的