【发布时间】:2014-01-26 16:53:50
【问题描述】:
我需要为 Java 上的客户端-服务器聊天创建一个协议。 我使用 xml 对它们之间的消息进行编码,但我无法决定如何将解码后的数据返回给服务器。
第一次,我创建了许多对象implements IAction(例如Auth 对象代表一个数据包,关于聊天中的新用户),这取决于它们的内容。
因此,当服务器接收到一个套接字时,它会调用我的public IAction decode(String s),然后,服务器应该确定它是什么对象:
if (myIAction instanceof Auth) {
server.doMagicAuth((Auth) myIAction);
}
但它看起来很难看,因为类型转换和许多 ifes
另一种方法是创建一个名为Packet 的通用对象,它可以包含intValue、floatValue、stringValue 等。它还有一个标志,说明它是什么类型的数据包。
但这是碰撞中最糟糕的想法。例如,如何向这个数据包发送 2 个 int 值?例如密码和users_id?
最新的想法是观察服务器。
服务器应该有许多重载的public void action(IAction a) 方法(action(Auth a) ... 等),并且协议应该根据数据包的类型通知服务器。
我无法决定使用什么方法。也许你有一些完全不同的想法?
【问题讨论】:
标签: java client-server