写在前面:大家好,我是草莓橙须圆。毕业之前在优快云和微信公众号活跃
欢迎关注我的公众号:【草莓橙须圆】
微信公众号主要就是更新大学生或者考研党的日常
优快云主要就是学习Java过程中总结的笔记,以及编程分享
这篇文章主要是给大家分享Linux利用 Socket 通信实现网络聊天程序
Socket是什么呢?
socket起源于Unix,而Unix/Linux基本哲学之一就是“一切皆文件”,都可以用“打开open –> 读写write/read –> 关闭close”模式来操作。我的理解就是Socket就是该模式的一个实现,socket即是一种特殊的文件,一些socket函数就是对其进行的操作(读/写IO、打开、关闭)。
Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。
先从服务器端说起。服务器端先初始化Socket,然后与端口绑定(bind),对端口进行监听(listen),调用accept阻塞,等待客户端连接。在这时如果有个客户端初始化一个Socket,然后连接服务器(connect),如果连接成功,这时客户端与服务器端的连接就建立了。客户端发送数据请求,服务器端接收请求并处理请求,然后把回应数据发送给客户端,客户端读取数据,最后关闭连接,一次交互结束。
1.【问题描述】
在 Linux 环境下,利用 Socket 通信实现网络聊天程序,主要包括以下功能:
⑴ 写一个 shell 脚本,实现聊天界面的显示、用户的注册、登录(登录后可显示 用户昵称)、聊天方式的选择等功能。
⑵ 聊天方式分为:公聊和私聊。
⑶ 实现客户端之间网络传输文件。
⑷ 保存聊天记录,以备必要时查询。
⑸ 其它额外功能。
聊天界面:
⑴ 聊天界