2010-11-17 44 views
0

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

喜欢的东西:

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

是否有这样的使用普通插座通信流控制的惯例,也许序列化?我应该在Java中使用RMI吗?

回答

1

没有。如果您使用套接字创建客户端/服务器通信,则必须定义自己的协议以及适用于该协议的规则。

RMI可以通过执行特定的对象方法来缓解这一步骤。交易是,我最近听到的rmi服务器等的初始设置并不像以前那么难。

这里有一个RMI tutorial可能对您有用

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上的最小层 。它提供了类似于KryoNet的TCP网络 ,但没有 更高级别的功能。 Priobit 要求所有网络通信到 发生在单个线程上。

Java Game Networking项目是一个 高级库,类似于 KryoNet。 JGN没有像API那样简单的 。

+0

这看起来很酷。我可能会将它用于这个小型项目,而不是我想到的普通套接字解决方案。谢谢(你的)信息! – chucknelson 2010-11-18 01:51:43