仿QQ聊天第一版_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > 仿QQ聊天第一版

仿QQ聊天第一版

 2014/8/6 21:48:54  肆无忌惮_  程序员俱乐部  我要评论(0)
  • 摘要:在Socket和ServerSocket通信的应用上,挑选了聊天来进行深入练习.这是第一个版本,暂时实现了基本的登录,群聊,私聊,同步联系人列表等功能.这里简化了很多功能,所有在线用户就是一个群,私聊还存在一点问题将在下版本修复.先写个总结,记录自己的开发思路,也给初学者一个参考.第一步,写一个窗口,上面放两个文本框用来输入账号密码.还有一个登陆按钮.在这里直接用JTextField.它可以直接监听回车键产生动作.第二步,点击登录或者按了回车就需要和服务端进行通信
  • 标签:QQ

?在Socket和ServerSocket通信的应用上,挑选了聊天来进行深入练习.

这是第一个版本,暂时实现了基本的登录,群聊,私聊,同步联系人列表等功能.

这里简化了很多功能,所有在线用户就是一个群,私聊还存在一点问题将在下版本修复.先写个总结,记录自己的开发思路,也给初学者一个参考.

?

第一步,写一个窗口,上面放两个文本框用来输入账号密码.还有一个登陆按钮.在这里直接用JTextField.它可以直接监听回车键产生动作.

?

第二步,点击登录或者按了回车就需要和服务端进行通信,首先做一个最简单的打印测试是不是联通了.

?

第三步,点击登录之后就弹出新的窗口.上面有一个列表显示当前在线的联系人,并且双击其中一个就打开私聊窗口.如果点击群图标就开始群聊.

?

第四步,在之前的基础上,加入账号登录时候检查,必须账号密码存在于服务器并且账号密码配对才可以正常登录.这里用HashMap来记录.

HashMap<int(号码),User(账户,包括这个账号的号码,密码,昵称,个性签名,性别,年龄等等)>

同时也要用HashMap保存所有已经注册了的账户的信息.

?

第五步.把界面做的美观一点.

?

代码实现过程:
写一个收发消息的工具,专门负责收发消息,并且在里面定义好传输用到的协议,用来区分收到的是一个登陆消息还是注册消息,还是私聊消息,还是群聊等等.

所以同样需要一个消息类,里面包含4个属性,一个是type,一个是senderNum,一个是receiverNum,一个是content(Object).

?

然后需要一个用户类User,用来保存一个账号需要的一些信息

?

接下来开始写客户端连接之后启动线程来接收消息.并new出相应的ChatUI

?

在服务器进行各种消息的处理.

对包括登陆时验证密码是否正确,账号是否存在,将在线联系人列表发给新登录的客户端等等之类的消息进行处理.

?

里面也有许多细节问题需要注意,参见之前写的几篇异常和各种小功能实现的总结.

附上如果获得当前时间的代码:

?

class="java" name="code">public String getTime() {
		// 创建时间对象
		long time = System.currentTimeMillis();
		Date date = new Date(time);
		SimpleDateFormat sdf = new SimpleDateFormat("y/M/d  HH:mm:ss");
		return sdf.format(date);
	}

?

现版本存在的问题:

?

键盘监听器回车发送消息有问题

需要用map存起来号码对应的聊天窗口对象,不然每个人的私聊记录都会显示在一起

最大化->最小化->最大化->恢复正常窗口 ?有点小问题.将在下个版本再解决.

传文件未实现

?

?

附上效果图和代码:

代码逻辑比较简单.主要是客户端发了个什么消息,服务器就做出相应的反应,服务器发了个什么消息,客户端又做出相应的反应.



?



?



?

?



?

所有代码(内附说明和QQ美化的素材)

?

?

?

  • 大小: 70.9 KB
  • 大小: 103.8 KB
  • 大小: 134.4 KB
  • 大小: 83.2 KB
  • Chat140806.zip (2.5 MB)
  • 下载次数: 0
  • 查看图片附件
上一篇: Java程序猿,手游引擎怎么选?(入门篇) 下一篇: 没有下一篇了!
发表评论
用户名: 匿名