非图形化界面命令式操作通讯软件
简介:使用javase编写,功能丰富,使用多线程,高度集成与一体,客户端和服务器各仅有500k不到,依赖jre,支持用户多对多通讯。18年5月份在仅有java基础的情况下没日没夜昼夜颠倒不吃不喝耗时一个多月精心打造,期间没有一天休息。
介绍:
操作指南
- 这是一款天真无邪轻量级的通讯软件;
- 客户端通过命令tcpChatTo 可与其他用户进行聊天;
- 客户端通过命令getOnlineIDs 获取所有在线用户列表;
- 原本尝试了使用udp传输方式进行通讯,但是丢包率实在太高,需要模拟tcp的握手协议才能解决丢包问题,对命令式操作系统非常不友好,所以屏蔽了这个功能;
- 客户端通过命令tcpSendFile 可发送文件给指定用户,文件接收方需要通过直接回车进入选择,再次回车是拒绝接收文件,或者输入任意字符后回车即可确认接收文件,而后发送方输入要传输的文件路径即可开始传输,文件传输过程有进度提示;
- 如果要传输的是文件夹,则会提示是否打包压缩后进行传输,通过我自己写的压缩工具压缩文件夹为压缩文件进行传输;
- 如果ID为vip用户,则服务器会保存该用户的聊天记录,用户可以通过命令getRoamChats 下载漫游聊天记录文件;
- 服务器提供云盘功能,所有用户可以通过命令uploadFiles 上传文件到云服务器,通过命令getCloudList 获取云盘文件列表,根据云盘文件列表序号,通过命令downloadFile 下载相应文件,通过命令deleteFile 删除对应序号的云盘文件;
- 客户端通过命令chatToServer 可发送消息给服务器,服务器也可通过命令chatToClient 发送消息给指定用户;
技术亮点
- 客户端有心跳机制,每隔一段时间就会发送心跳包,以给服务器确认该用户仍然在线。客户端通过命令close 关闭或直接终止进程,服务器立马会获知该用户已下线,从而更新在线用户列表。但客户端有可能未关闭,但他的网络断开连接,这个时候服务器会发现某用户发送心跳包超时,从而将该用户从在线用户列表中移除。除此之外,心跳包还可以保证tcp的长期连接;
- 内存数据使用了高效的同步机制,确保了多进程并发执行中不会对数据脏读脏写;
- 代码短小精悍,保证了减少冗余、节省内存的同时功能完善无bug;