每日一个计算机小知识:Socket

B站影视 港台电影 2025-10-26 20:08 1

摘要:Socket [ˈsɑːkɪt] 作英语名词时表示:插座、插孔、凹槽、窝、孔穴。在计算机领域,socket 被翻译为套接字,它是操作系统提供的进程间网络通信接口(并不是具体实现,不同的系统和语言可以实现不同),使得不同主机或同一主机上的应用程序可以在网络中进行

每日分享一个有趣的计算机小知识,今日话题:socket

- start -

Socket [ˈsɑːkɪt] 作英语名词时表示:插座、插孔、凹槽、窝、孔穴。在计算机领域,socket 被翻译为套接字,它是操作系统提供的进程间网络通信接口(并不是具体实现,不同的系统和语言可以实现不同),使得不同主机或同一主机上的应用程序可以在网络中进行数据传输。

Socket 起源于 Unix 系统,于1983年正式发布,它解决了网络编程中各种协议细节复杂、跨平台兼容性差的问题,统一了网络通信的编程接口。

它本质上是一个抽象接口,位于应用层和传输层之间,屏蔽了底层网络协议的复杂细节,将TCP、UDP等底层协议的调用封装成简单的 API(如bind、listen、accept、connect、send、recv、close),让开发者无需直接操作复杂的协议细节就能实现网络通信。

下面以TCP协议传输数据为例演示,括号里以打电话举例

创建Socket => 绑定端口 =>监听连接 =>接受连接 =>收发数据 =>关闭连接

1. 创建 Socket

调用 socket 函数,创建一个 TCP 类型的 Socket。(先 装个电话)

2. 绑定端口

调用 bind 函数,将 Socket 与端口绑定,告诉操作系统监听这个端口。(给电话绑个固定号码:IP + 端口)

3. 监听连接

调用 listen 函数,让 Socket 进入监听状态,等待客户端连接。(开机等着)

4. 接受连接

调用 accept 函数,阻塞等待客户端连接;当有客户端连接时,返回一个新的 Socket(专门用于与该客户端通信),原 Socket 继续监听其他连接。(有人打来电话就接)

5. 收发数据

通过新 Socket 的 recv 接收和 send 发送函数与客户端交互。(接了电话之后就可以聊天)

6. 关闭连接

通信结束后,调用 close 关闭 Socket。(聊完挂电话)

客户端步骤:

创建Socket =>发起连接 =>收发数据 =>关闭连接

1. 创建 Socket

调用 socket 函数,创建 TCP Socket。(也先装个电话)

2. 发起连接

调用 connect 函数,向服务器发起连接,触发三次握手。(有事拨服务器的号码)

3. 收发数据

连接建立后,通过 send 和 recv 与服务器进行数据交互。(电话通了就能互相聊天)

4. 关闭连接

调用 close 关闭 Socket,触发四次挥手。(聊完挂电话)

还有一个跟 Socket 名字很像的叫 WebSocket,它是基于 TCP 的一种应用层、全双工、有状态、长连接、双向的网络通信协议,于2011年被 IETF 定为正式标准。弥补了 HTTP 协议只能由客户端发起通信的缺陷,让服务端也能主动向客户端推送数据。

它通过一次HTTP握手建立持久连接,后续通信复用同一TCP通道,连接后再用真正的 WebSocket 协议来进行通信,广泛应用于网页实时聊天、实时数据监控、直播弹幕、在线协作工具等浏览器端需要实时交互的场景。

来源:惜文教育

相关推荐