Socket API 学习笔记

推荐阅读

为什么使用 Socket :https://csperkins.org/teaching/2007-2008/networked-systems/lecture04.pdf
Berkeley Socket API 详解:https://beej.us/guide/bgnet/html/

为什么使用 Socket?

Q:我们为什么需要使用 Socket ,它解决了什么问题?
A:常见的“Socket 编程”,实际上是通过 Berkeley Socket API 实现数据交换。 TCP 协议中三次握手、四次挥手的具体实现很复杂,能不能封装一下,供应用层调用?Berkeley Socket API 就是这样一个封装,只需要分别调用connect()close(),就能实现连接的建立和关闭。
Q:Socket 在协议栈中的哪一层?
A:在应用层和运输层之间。将运输层的操作封装后,供应用层调用。

如何使用 Socket?

Socket API 调用流程图(Source)(注:closesocket 是 Winsock 中的名称,对应 Berkeley Sockets API 的 close):
Socket API 学习笔记