仿QQ聊天第一版

阅读更多

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

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

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

 

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

 

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

 

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

 

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

HashMap

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

 

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

 

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

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

 

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

 

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

 

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

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

 

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

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

 

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聊天第一版_第1张图片
 


仿QQ聊天第一版_第2张图片
 


仿QQ聊天第一版_第3张图片
 

 


仿QQ聊天第一版_第4张图片
 

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

 

 

 

  • 仿QQ聊天第一版_第5张图片
  • 大小: 70.9 KB
  • 仿QQ聊天第一版_第6张图片
  • 大小: 103.8 KB
  • 仿QQ聊天第一版_第7张图片
  • 大小: 134.4 KB
  • 仿QQ聊天第一版_第8张图片
  • 大小: 83.2 KB
  • Chat140806.zip (2.5 MB)
  • 下载次数: 17
  • 查看图片附件

你可能感兴趣的:(Socket,QQ,JAVA)