什么是 Socket
Socket 可以理解为网络通信的端点。
对于 TCP 通信来说,一个连接通常由四元组唯一确定:
例如:
1 2
| 客户端:192.168.1.100:50000 服务器:192.168.1.10:8080
|
Socket 类型
常见 Socket 类型:
| 类型 |
说明 |
对应协议 |
| SOCK_STREAM |
面向连接、可靠、字节流 |
TCP |
| SOCK_DGRAM |
无连接、不可靠、数据报 |
UDP |
| SOCK_RAW |
原始套接字 |
IP/ICMP |
TCP Sokcet 通信流程
服务端流程
1 2 3 4 5 6
| socket() bind() listen() accept() recv()/send() close()
|
客户端流程
1 2 3 4
| socket() connect() send()/recv() close()
|
TCP 服务端示意
1 2 3 4 5 6 7 8 9 10 11 12 13
| 客户端 服务端 | | | connect | |---------------------->| | | accept | send | |---------------------->| | | recv | recv | |<----------------------| | | | close | |---------------------->|
|
UDP Socket 通信流程
UDP 是无连接协议,不需要 listen() 和 accept()。
UDP 服务端
1 2 3 4 5
| socket() bind() recvfrom() sendto() close()
|
UDP 客户端
1 2 3 4
| socket() sendto() recvfrom() close()
|