Linux利用 Socket 通信实现网络聊天程序

写在前面:大家好,我是草莓橙须圆。毕业之前在****和微信公众号活跃
欢迎关注我的公众号:【草莓橙须圆】
微信公众号主要就是更新大学生或者考研党的日常
****主要就是学习Java过程中总结的笔记,以及编程分享

这篇文章主要是给大家分享Linux利用 Socket 通信实现网络聊天程序

1.【问题描述】
在 Linux 环境下,利用 Socket 通信实现网络聊天程序,主要包括以下功能:
⑴ 写一个 shell 脚本,实现聊天界面的显示、用户的注册、登录(登录后可显示 用户昵称)、聊天方式的选择等功能。
⑵ 聊天方式分为:公聊和私聊。
⑶ 实现客户端之间网络传输文件。
⑷ 保存聊天记录,以备必要时查询。
⑸ 其它额外功能。

聊天界面:
⑴ 聊天界面的显示、在线用户、在线人数、系统时间等。
⑵ 聊天方式的选择。
⑶ 用户的注册功能。

客户端:
⑴ 用户需要登录,登录时只需要输入一个昵称即可无需判断昵称是否重复(如果其他功能都 ok 考虑)。
⑵ 用户登录后连接服务器端,进入聊天室 。
⑶ 用户可以输入聊天信息,也可以收到别人的聊天信息。
⑷ 用户可以用某个特殊单词代表退出聊天室。

服务器端:
⑴ 启动服务器,开放端口 。
⑵ 等待客户端的连接,每连接上一个客户端,启动一个线程。
⑶ 在线程中与客户端交互,交互过程:如果有客户端登录、退出、提交聊天,都应该发给所有的客户端。

2.【具体代码见文末】

3.【实例测试及运行结果】
开启服务器:
Linux利用 Socket 通信实现网络聊天程序
客户端:注册
Linux利用 Socket 通信实现网络聊天程序
登录:
Linux利用 Socket 通信实现网络聊天程序
Linux利用 Socket 通信实现网络聊天程序
上线提醒:
Linux利用 Socket 通信实现网络聊天程序
选择好友聊天:
Linux利用 Socket 通信实现网络聊天程序
进入私聊界面:
Linux利用 Socket 通信实现网络聊天程序
发送消息:
Linux利用 Socket 通信实现网络聊天程序
传输文件:
Linux利用 Socket 通信实现网络聊天程序
Linux利用 Socket 通信实现网络聊天程序
FileRecv:
Linux利用 Socket 通信实现网络聊天程序
创建群:
Linux利用 Socket 通信实现网络聊天程序
Linux利用 Socket 通信实现网络聊天程序
选择群聊:
Linux利用 Socket 通信实现网络聊天程序
邀请好友加群:
Linux利用 Socket 通信实现网络聊天程序
查看群成员:
Linux利用 Socket 通信实现网络聊天程序

退群:
Linux利用 Socket 通信实现网络聊天程序
群主退出则为解散群:
Linux利用 Socket 通信实现网络聊天程序

添加好友并拒绝:
赵六加李四为好友,李四拒绝。
Linux利用 Socket 通信实现网络聊天程序
李四拒绝图:
Linux利用 Socket 通信实现网络聊天程序
Linux利用 Socket 通信实现网络聊天程序

李四拒绝后赵六反应:
Linux利用 Socket 通信实现网络聊天程序

添加好友并同意:
王五界面:
Linux利用 Socket 通信实现网络聊天程序
李四界面:
Linux利用 Socket 通信实现网络聊天程序
李四同意后:
Linux利用 Socket 通信实现网络聊天程序
李四同意后界面:

Linux利用 Socket 通信实现网络聊天程序
注销登录:

Linux利用 Socket 通信实现网络聊天程序
退出客户端:
Linux利用 Socket 通信实现网络聊天程序

此设计的不合理的地方:由于在测试前的多次运行中已经在多个用户间都建立了好友关系。所以在测试的时候无法再次添加好友了,然而此时才发现没有设计删除好友的功能。只好采取新注册一个用户的方式来进行测试。这启发我们对于数据的处理一定要满足增删改查四大基本功能。即使现在没有准备完善这些功能,也可以在日后需要这些功能的时候通过直接调用函数来快速完成。

使用说明:

  • 服务器端
    cd chat_room/Server 进入服务器文件夹
    Make
    最后./chat_room_srv
    没有报错的话服务器就启动成功了
  • 客户端
    cd chat_room/Client 进入客户端文件夹
    make
    最后./chat_room_cli
    请先注册一个账号,输入正确格式的用户名和密码
    再登陆,即可。

已经把完整的代码打包在了我账号的下载资源里,是整个实验的完整成果,需要自取。