java网络编程应用-本地版通讯QQ模拟

来源:互联网 发布:datagridview数据滚动 编辑:程序博客网 时间:2024/05/22 02:29

原题

 编写一对多的聊天程序,程序由服务器和客户端两部分构成,两部分的交互方式如下:a. 客户端发送命令: <register name=”xu”/> 给服务器端注册用户,服务器端如果允许注册,则返回消息:<result command=”register” state=ok” />,否则返回消息: <result command= registerstate= errormessage=”” />b. 客户端发送命令: <login name=”xu”/> 给服务器端进行登录, 服务器端如果允许登录,则返回消息: <result command= loginstate=ok” />,否则返回消息: <result command= loginstate= errormessage=”” />;c. 客户端发送命令: <message from= xuto= zhangmessage=this is a test” > 给服务器端,服务器端收到命令后返回消息: <resultcommand=” messagestate= ok” />;d. 服务器向指定客户端发送命令: <message from=”xu” to=”zhang”message= this is a test” >,如果客户端收到消息,则返回: <resultcommand=” messagestate= ok” />,如果 message 命令中的 from属性为空,则表示由服务器发送的消息。e. 客户端发送命令: <logout name= xu” /> 给服务器端进行注销登录, 服务器端如果允许注销登录,则返回消息:<result command= logoutstate= ok” />,否则返回消息: <result command= loginoutstate=errormessage=”” />;程序可以采用 GUI,也可采用命令行的方式。 

运行截图



 项目说明

(1)本程序使用网络编程、多线程等内容实现了单机版的网络聊天室功能,并且使用题目中所指出的格式进行通讯,做到了分层,对对象封装等,有一定的扩展性(可以修改一部分地方以改成局域网版本)。
本程序启动之后,先要启动服务端,客户端之间才可以进行通讯(客户端进行通讯需要服务端进行转发)。
登录界面中的注册功能只能模拟请求,并没有真正的注册效果。
登录界面中的用户名需要唯一,作为发送的标识符,如果重复将无法登陆。
聊天界面中可以随时更改发送端的用户名。

项目包结构

项目大体架构

项目地址

https://github.com/EnTaroAdunZ/NetWord_Local_QQ.git