索引
- 1.开发契机
- 2.软件概述
- 3.服务器端
- 4.客户端
-
- 4.1 登录界面:MainActivity
- 4.2 聊天界面:ChatRoom
- 5.特点
1.开发契机
很早之前就想自己做出一个仅实现远程聊天功能,而不带有任何冗余功能的超级轻量化聊天软件。参考了众多开源的聊天软件源代码,发现大部分是使用socket实现了私有网络的通信。当时也是苦恼了一段时间,最终使用了JSON格式对聊天记录进行存储,并通过HTTP协议对JSON数据进行传输,从而实现了这个轻量化的聊天软件。
2.软件概述
该聊天软件不涉及数据库,所有聊天记录以JSON的形式存储于服务器的内存中。用户通过在登录界面登录以后便进入了一个公共的聊天室,可以通过公共网络与任何一个同样使用这个应用的用户进行聊天。以下分别是登录界面和聊天界面。
使用的开发工具及环境:
①Eclipse Java EE IDE for Web Developers. Version: Mars.1 Release (4.5.1)
②Android Studio 3.5.3
3.服务器端
我在本机搭建了Tomcat服务器作为Web应用的容器,使用Servlet来实现聊天的业务逻辑。
由于使用到了JSON数据,所以需要在相应的Web应用项目中的 WEB-INFlib 文件夹下导入6个jar包定义了一个DiffServlet
在web.xml对该Servlet进行注册
4.客户端
Android客户端包含两个Activity,一个是登录界面MainActivity,一个是聊天界面ChatRoom。所有的活动要在AndroidManifest.xml文件中进行注册,为了使用户在应用中使用输入法使界面的背景图不会被压缩,所以在每个活动标签中加入
这样一条代码,就可以解决背景图片被压缩的问题了。
由于项目中要使用网络,所以要在AndroidManifest.xml文件中对授权对网络的访问,添加如下代码:
注意
如果我们使用的是http协议的域名,使用Android Studio开发的应用可能会与主机连接不上,出现这种情况可参考6号楼下的大懒喵的博客 OkHttp请求http链接失败的问题
4.1 登录界面:MainActivity
布局文件:
源代码:
package com.example.chatroom;import androidx.appcompat.app.AppCompatActivity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;public class MainActivity extends AppCompatActivity implements View.OnClickListener { private Button btn_cnt; private EditText et_name; @Override protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);btn_cnt = (Button) findViewById(R.id.btn_cnt);et_name = findViewById(R.id.et_name);btn_cnt.setOnClickListener(MainActivity.this); } public void onClick(View view) 来源:孙家坑坑坑坑坑坑
声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!