`

仿QQ聊天第一版

阅读更多

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

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

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

 

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

 

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

 

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

 

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

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

同时也要用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美化的素材)

 

 

 

  • 大小: 70.9 KB
  • 大小: 103.8 KB
  • 大小: 134.4 KB
  • 大小: 83.2 KB
分享到:
评论

相关推荐

    仿QQ聊天第二版

    《仿QQ聊天第二版》是一款基于网络通信技术的聊天软件,旨在模拟QQ的聊天功能,让用户能够体验到类似的即时通讯体验。在这个项目中,我们主要会涉及到以下几个IT知识点: 1. **网络编程**:该软件的核心是网络通信...

    仿QQ聊天第三版 最终版

    【标题】"仿QQ聊天第三版 最终版" 涉及的知识点: 这个项目标题表明,这是一个模仿QQ聊天应用的第三个版本,并且是最终完善的产品。这通常意味着开发者已经经历了多次迭代,优化了用户体验和功能,使得软件更加稳定...

    qq聊天系统源码 仿qq聊天系统源码

    总的来说,"qq聊天系统源码 仿qq聊天系统源码"是一个宝贵的教育资源,对于想要进入即时通讯领域或者提升Web开发技能的开发者来说,具有很高的学习价值。通过深入研究WebQQ v1.81的源码,开发者不仅可以掌握即时通讯...

    安卓仿qq聊天客户端与服务器无错完整版

    第一步:将客户端手机与服务端电脑连接统一局域网,注意:必须在统一局域网内,查看电脑被分配的ip地址 将qq.sql文件导入数据库中 第二步:修改server和client中的Constants.java文件的IP地址,两个都改为之前查到的...

    h5版仿电脑端QQ聊天界面.zip

    【标题】"h5版仿电脑端QQ聊天界面.zip" 提供的是一个使用HTML5技术构建的、模仿电脑端QQ聊天界面的项目。这个压缩包包含了一整套用于创建类似QQ聊天体验的网页元素和交互设计,使得用户可以在网页上体验到与电脑版QQ...

    C#开发的仿QQ聊天软件源码

    标题 "C#开发的仿QQ聊天软件源码" 暗示了这是一个使用C#编程语言编写的项目,目的是创建一个类似腾讯QQ的即时通讯应用。C#是一种面向对象的、现代的编程语言,常用于开发Windows桌面应用程序、游戏、Web服务等。此...

    安卓版高仿QQ聊天软件源代码

    【安卓版高仿QQ聊天软件源代码】是一个用于学习和研究的项目,它涵盖了客户端和服务器端的开发,旨在模仿腾讯QQ的聊天功能。这个项目对于Android开发者,尤其是那些对即时通讯应用开发感兴趣的开发者来说,是一个...

    仿QQ聊天第三版(头像设置、文件传输)

    【标题】"仿QQ聊天第三版(头像设置、文件传输)"是一个项目,旨在模仿QQ聊天软件的功能,包括用户头像的个性化设置以及文件的发送和接收。这个项目可能是一个教学示例或个人实践,帮助学习者理解网络通信、多线程编程...

    仿QQ多个聊天窗口合并

    "仿QQ窗口停靠"和"QQ聊天窗口吸附"是指该项目实现了窗口可以像QQ那样停靠在屏幕边缘或彼此吸附,使得窗口布局更加灵活,适应用户的个性化需求。"多窗口吸附"则意味着不止两个窗口,而是可以同时处理和组织多个聊天...

    ANDROID仿QQ聊天界面及发送动态表情(修改版)

    这个"ANDROID仿QQ聊天界面及发送动态表情(修改版)"项目旨在教你如何构建这样一个功能丰富的聊天应用。下面将详细讲解其中涉及的关键知识点。 1. **自定义布局设计**:聊天界面通常需要一个自定义的布局来实现消息...

    仿QQ聊天项目

    【仿QQ聊天项目】是一个基于Android和Java技术的移动端应用程序,旨在模拟QQ聊天软件的核心功能。这个项目展示了如何使用这两种编程语言来构建一个简单的即时通讯应用。以下将详细阐述项目中的关键知识点: 1. **...

    仿QQ聊天系统4.0源码(扩展韩顺平的简单的聊天程序的功能及界面)

    而"仿QQ聊天系统4.0所要用的外jar.zip"则可能包含了项目依赖的第三方库,如网络通信库、GUI框架等,这些都是实现聊天功能所必需的。 总的来说,仿QQ聊天系统4.0是一个综合性的项目,涵盖了网络编程、GUI设计、多...

    Android应用源码高仿QQ客户端加服务端加数据库全套.zip

    1. **QQ聊天界面**: - 聊天界面是用户与应用的主要交互点,通常包含消息列表、输入框和发送按钮。消息列表展示历史记录,可以通过RecyclerView或ListView实现,使用Adapter来绑定数据。 - 消息泡泡是聊天界面的核心...

    安卓开发的仿qq的社交聊天软件项目源码,功能已经非常完善,可以作为安卓学习的不二首选

    这个"仿qq的社交聊天软件项目源码"提供了一个完整的解决方案,是学习安卓开发的理想实践案例。下面将详细介绍这个项目可能包含的重要知识点。 首先,项目的核心是消息传递系统。它需要实现用户之间的即时通讯,这...

    ios中实现仿QQ聊天界面

    9. **媒体支持**:QQ聊天支持发送图片、表情等,可以集成`UIImagePickerController`让用户选择媒体文件,或者使用第三方库如`SwiftMessages`来发送表情。 10. **优化用户体验**:添加动画、过渡效果,使界面更加...

    佳蓝仿QQ群在线聊天系统免费版 v2.0 build 090827.zip

    《佳蓝仿QQ群在线聊天系统免费版 v2.0 build 090827》是一款基于互联网的即时通讯软件,旨在为用户提供类似于QQ群的在线聊天功能,但其核心在于免费使用。该系统由佳蓝公司开发,旨在满足个人用户、小型团队或社区的...

    MyQQ_v20120823(Java版高仿QQ聊天即时通软件)

    第一阶段老师让做的项目,现在完整项目打包上传上来,Java版高仿QQ即时通聊天软件,包括客户端和服务端,特别是登录窗体,几乎与腾讯QQ2011没有区别,包含创建数据库的SQL命令,主要功能包括私聊、表情发送、图片发送、...

    ios仿移动QQ聊天页面布局

    以下将详细介绍实现"ios仿移动QQ聊天页面布局"所需的关键知识点。 1. **Auto Layout与Size Classes**: iOS应用中的界面布局通常使用Auto Layout来实现,它允许开发者定义视图之间的约束关系,以适应不同屏幕尺寸...

Global site tag (gtag.js) - Google Analytics