Socket 编程

Socket( “套接字” ),是 BSD UNIX 的进程通信机制,用于描述 IP 地址和端口,是一个通信链的句柄。

电脑上运行的应用程序,通常是通过 Socket 向网络发出请求或应答网络请求


— Socket 是应用层与 TCP/IP 协议族通信的中间软件抽象层

在设计模式上,它其实是一个门面模式,把复杂的 TCP/IP 协议族隐藏在 Socket 后面,对于用户来说,只需要调用 Socket 规定的相关函数,让 Socket 去组织符合指定的协议数据,然后,进行通信

可以理解为 TCP/IP 网络的 API,它定义了许多函数和例程,开发者可以使用它们来开发 TCP/IP 网络上的应用程序

— 常用的 Socket 类型有两种:

  • 流式 Socket:一种面向连接的 Socket,针对面向连接的 TCP 服务应用( 就像是打电话,需要事先拨号,拨号成功后,双方就建立起连接了,连接成功后才可以发送数据;可靠性强,但效率不高 )
  • 数据报式 Socket:一种无连接的 Socket,针对于无连接的 UDP 服务应用( 就像是发短信,不需要对方和你事先是否连接,不管对方目前在干什么,状态是怎样的 ...,直接填好短信(数据)接收的电话号码( IP地址 ),然后发送,收没收到也不管;不可靠,易丢失数据,但,比较快,一般直播用 UDP )

基于 TCP 协议的 Socket 编程