如何使用Java中的套接字通信实现流控制?

时间:2010-11-17 01:38:06

标签: java sockets rmi

我目前正在使用套接字在Java中编写一个简单的客户端/服务器。我希望服务器根据不同的“命令”和/或通过套接字从客户端接收的序列化对象做出决策,反之亦然。

类似的东西:

[Receive Command 'DoSomething' From Client]
[Call Method 'DoSomething' on the Server]
[Send result/status to Client]
etc...

是否存在使用普通套接字通信的流控制约定,也许是序列化?我应该在Java中使用RMI吗?

2 个答案:

答案 0 :(得分:2)

我建议KryoNet使用任何RMI类型的东西,而不需要RMI的开销和它带来的不灵活性。

http://code.google.com/p/kryonet/

  

KryoNet做出了假设   将仅用于客户端/服务器   架构和Kryo​​Net将是   用于网络的两侧。   因为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你可能会发现有用的