我需要为Java上的客户端 - 服务器聊天创建协议。 我使用xml来编码它们之间的消息,但我无法决定如何将解码后的数据返回给服务器。Java客户端 - 服务器聊天协议设计
第一次,我创建了很多对象implements IAction
(例如Auth
对象代表一个数据包,关于聊天中的新用户),这取决于它们的内容。 所以,当服务器接收到一个插座,它调用我public IAction decode(String s)
然后,服务器应该确定哪些对象是:
if (myIAction instanceof Auth) {
server.doMagicAuth((Auth) myIAction);
}
,但它一直在寻找丑到我,因为类型转换和许多国际选举制度基金会
另一种方法是创建一个共同的对象,被称为Packet
,它可以包含intValue
,floatValue
,stringValue
等。而且它有一个标志,它谈论它是什么样的数据包。但这是碰撞最糟糕的主意。例如,如何发送2个int值给它这个包?例如密码和users_id?
而最新的想法是观察服务器。 服务器应该有很多重载public void action(IAction a)
方法(action(Auth a)
等),协议应该通知服务器,取决于它是什么类型的数据包。
而我不能决定,使用什么方法。也许你有一些完全不同的想法?
XML是我的实验室=的限制( 而问题是另一个问题:如何将解码后的数据从协议 – ovnia
的解码数据传递到服务器只不过是一个字符串,只要将它发送到你的服务器,你喜欢的任何方式。 。调用一个方法,发送一个事件,几乎任何东西都可以在这里工作。 –
,再次,我不问如何用数据包表示我的数据)它是协议的工作。我无法决定如何将解码后的数据呈现给服务器。例如'Protocol'对一个xml字符串进行解码,并且明白它是一个包,并且有一个从user123到user21的新消息,所以我需要服务器向'user21'发送消息。还有一个问题:“如何要求服务器做到这一点?”其实是我想知道的) – ovnia