套接字
套接字(Sockets)

什么是套接字?
套接字(Socket)是网络编程的基础,它是进程间通信的一种机制,允许不同主机上的进程进行通信。套接字提供了一个通用的接口,用于通过网络进行数据传输。
套接字类型
1. 流套接字(SOCK_STREAM)
提供面向连接的、可靠的数据传输
使用TCP协议
保证数据顺序和完整性
适用于文件传输、网页浏览等
2. 数据报套接字(SOCK_DGRAM)
提供无连接的、不可靠的数据传输
使用UDP协议
不保证数据顺序和完整性
适用于视频流、实时游戏等
3. 原始套接字(SOCK_RAW)
提供对底层网络协议的访问
需要root权限
适用于网络诊断、协议开发
基本套接字操作
地址族
AF_INET- IPv4地址族AF_INET6- IPv6地址族AF_UNIX- UNIX域套接字AF_NETLINK- 内核用户接口AF_PACKET- 底层包接口
套接字选项
常见错误处理
ECONNREFUSED- 连接被拒绝ETIMEDOUT- 连接超时ECONNRESET- 连接被重置ENOTCONN- 套接字未连接
UNIX域套接字

UNIX域套接字特点
UNIX域套接字(UNIX Domain Sockets)是一种特殊的套接字,用于同一主机上的进程间通信。
优势
高性能:不经过网络栈,直接在内核中传递数据
安全性:基于文件系统权限
可靠性:保证数据传输的完整性
低延迟:没有网络开销
使用场景
本地服务通信
数据库连接
IPC(进程间通信)
微服务架构
创建UNIX域套接字
文件权限
UNIX域套接字的权限由文件系统权限控制:
客户端连接
套接字最佳实践
错误处理:始终检查系统调用的返回值
资源管理:正确关闭套接字,避免资源泄漏
超时设置:为网络操作设置合理的超时时间
缓冲区管理:正确处理部分发送/接收的情况
并发处理:使用多线程或I/O多路复用处理并发连接
参考资料
最后更新于