简介
很多初学者都对网络编程很感兴趣但是,也很想实现一个聊天软软件。可以在家中和自己的好朋友聊天 用自己做的软件,那是个什么很开心 的事。这几天写了一个比较简单的一对一聊天。
首先我先介绍一下整个项目的原理吧。 第一步 先写服务端写一些服务端对客户端发送过来的数据进行处理 我这里大部分都是json解析 。
第二步 写服务端可能会用到数据库 这里用到了了mysql数据库 对于数据库的基本操作要有了解
第三步 写客户端 客户端用到了volley包 发送json数据 发送到服务端 服务端解析 给客户端返回数据
很多项目的原理基本都是这 对于初学者 我觉得这对他们很重要 。
源码介绍
虽然不能多客户端操作,但是几百个应该没问题。用户登录注册这块就不拿出来了,直接发核心的一部分。
服务端 源码介绍 :
服务端这块用idea写的 用到的jar包
idea用到的jar包其次部署tomcat 不会部署的小伙伴可以百度一下 都很简单
然后编写web-INT文件夹里的web.xml,直接在web-app标签里写
简单介绍下 上图的上半部分是服务端收到客户端的消息 来记录下发送的数据添加到数据库里 name是 send_person_message
访问路径是http://ip:port/项目名(由自己配置)/send_person_message
其次编写servlet 类
将客户端发送过来的数据转化为JSONObject的一个工具类接收客户端发送过来的聊天消息 类
最上面有个注解 和web.xml里的name对应
上图的代码功能 将客户端的数据转换为json 然后连接数据库 将客户端的qq_1 qq_2 message_1 message_2 取过来 ,
数据库这部分简介 当初写代码太着急 其实不用 message_2 只需要在数据库里添加 qq_1 qq_2 message_1 就ok了, 但是我这么写不会有影响,对了还有一点提醒一下 qq_1的数据类型最好是int 自增长 设置主键 这样可以防止qq号冲突,还有一些办法大家可以自由发挥了.
接着说将客户端读取过来的数据加入到数据库 在将qq1 qq_2的聊天记录取回来 返回一个集合
String sql ="select * from person_chart where(qq_1=? and qq_2=?) or (qq_1=? and qq_2=?)";
这相当于读取了聊天记录 也可以每次设置读取最后多少条,因为这里我客户端没用数据库 所有的都在服务端这块,所以每次返回都是所有聊天记录。
客户端请求 读取聊天记录的消息
客户端请求取得聊天记录接下来 就介绍下客户端 我主要用到的jar包 volley 和 evbus 客户端的就比较简单了
先上最核心代码 客户端与服务端互动
requestQueue = Volley.newRequestQueue(PeronActivity.this);
发送成功后,可以开个计时器 一直响应好友的聊天记录,来读取好友发过来的消息 ,计时器跟随activity的摧毁而摧毁。
网友评论