Linux利用 Socket 通信实现网络聊天程序
写在前面:大家好,我是草莓橙须圆。毕业之前在****和微信公众号活跃
欢迎关注我的公众号:【草莓橙须圆】
微信公众号主要就是更新大学生或者考研党的日常
****主要就是学习Java过程中总结的笔记,以及编程分享
这篇文章主要是给大家分享Linux利用 Socket 通信实现网络聊天程序
1.【问题描述】
在 Linux 环境下,利用 Socket 通信实现网络聊天程序,主要包括以下功能:
⑴ 写一个 shell 脚本,实现聊天界面的显示、用户的注册、登录(登录后可显示 用户昵称)、聊天方式的选择等功能。
⑵ 聊天方式分为:公聊和私聊。
⑶ 实现客户端之间网络传输文件。
⑷ 保存聊天记录,以备必要时查询。
⑸ 其它额外功能。
聊天界面:
⑴ 聊天界面的显示、在线用户、在线人数、系统时间等。
⑵ 聊天方式的选择。
⑶ 用户的注册功能。
客户端:
⑴ 用户需要登录,登录时只需要输入一个昵称即可无需判断昵称是否重复(如果其他功能都 ok 考虑)。
⑵ 用户登录后连接服务器端,进入聊天室 。
⑶ 用户可以输入聊天信息,也可以收到别人的聊天信息。
⑷ 用户可以用某个特殊单词代表退出聊天室。
服务器端:
⑴ 启动服务器,开放端口 。
⑵ 等待客户端的连接,每连接上一个客户端,启动一个线程。
⑶ 在线程中与客户端交互,交互过程:如果有客户端登录、退出、提交聊天,都应该发给所有的客户端。
2.【具体代码见文末】
3.【实例测试及运行结果】
开启服务器:
客户端:注册
登录:
上线提醒:
选择好友聊天:
进入私聊界面:
发送消息:
传输文件:
FileRecv:
创建群:
选择群聊:
邀请好友加群:
查看群成员:
退群:
群主退出则为解散群:
添加好友并拒绝:
赵六加李四为好友,李四拒绝。
李四拒绝图:
李四拒绝后赵六反应:
添加好友并同意:
王五界面:
李四界面:
李四同意后:
李四同意后界面:
注销登录:
退出客户端:
此设计的不合理的地方:由于在测试前的多次运行中已经在多个用户间都建立了好友关系。所以在测试的时候无法再次添加好友了,然而此时才发现没有设计删除好友的功能。只好采取新注册一个用户的方式来进行测试。这启发我们对于数据的处理一定要满足增删改查四大基本功能。即使现在没有准备完善这些功能,也可以在日后需要这些功能的时候通过直接调用函数来快速完成。
使用说明:
- 服务器端
cd chat_room/Server 进入服务器文件夹
Make
最后./chat_room_srv
没有报错的话服务器就启动成功了 - 客户端
cd chat_room/Client 进入客户端文件夹
make
最后./chat_room_cli
请先注册一个账号,输入正确格式的用户名和密码
再登陆,即可。
已经把完整的代码打包在了我账号的下载资源里,是整个实验的完整成果,需要自取。