日期:2014-05-20  浏览次数:20749 次

类似qq多人间一对一聊天,服务器应该怎么设置
单独使用tcp/ip,或udp协议写的程序都可以实现网络的一对一聊天。可是我想实现与qq相类的可以有多个好友有选择的聊天。
可是服务器端怎么处理接收到客户端发送的消息?因为客户端发送的消息有登陆消息与好友聊天消息。
及服务器端怎么处理发送到客户端的消息?因为客户端只有好友列表怎么样根据消息信息传给对应的好友对话框中?

弄了好久也没有想出好的处理方法!
请大家帮帮忙。谢谢。

------解决方案--------------------
在客户端和服务器间的通信应该定义成一种协议。比如,每次通信的消息包括两部分消息头和消息体。消息头就是这个消息的类型(可以标识用户列表、单发、组发、群发或者就是客户端发送的信息),消息体就是内容。有了这种协议你完全可以实现单发、组发和群发等功能,只要将这些信息存入消息头中即可。

如果采用协议的方式的话,我觉得用对象流会更方便,可以直接将消息的类型声明为类,得到消息后就可以用instanceof非常方便。

还有,服务器端应该维护一个所有在线用户的集合,到有用户上线更新该集合,然后向所有客户端发送用户列表,同时客户端更新显示这个集合。

可以定义Protocol类来实现协议,包括属性String header和Object body。并改用对象流。 
对于实现单发的协议可以让它继承Protocol,并添加属性String receive表示接受人。
客户端可以发送
Java code

new Protocol("userName", "用户名")
new SingleProtocal("Message","内容","接受人")
new Protocol("Message", "内容")