Install
openclaw skills install socketHelps with the socket abstraction, socket options, blocking vs non-blocking I/O, and multiplexing (select, poll, epoll). Use when the user asks about socket APIs, SO_* options, Unix domain sockets, or how to structure TCP/UDP server code at the socket level.
openclaw skills install socket本 Skill 帮助理解和使用**套接字(socket)**这一层抽象:类型与选项、阻塞/非阻塞、I/O 多路复用,以及与 TCP/UDP 的关系。具体 TCP/UDP 收发示例见 tcp / udp 两个 Skill。
当用户提到或需要:
选型:要可靠、有序、长连接用 TCP;要低延迟、可容忍丢包用 UDP;本机 IPC 可考虑 Unix domain。
| 选项(常见名) | 作用 | 典型用法 |
|---|---|---|
| SO_REUSEADDR | 允许 bind 到处于 TIME_WAIT 的端口 | 服务端重启快速复用同一端口 |
| SO_REUSEPORT | 多进程/线程同端口监听(部分 OS) | 负载均衡或多 worker |
| SO_RCVBUF / SO_SNDBUF | 接收/发送缓冲区大小 | 高吞吐或大延迟时调大 |
| SO_RCVTIMEO / SO_SNDTIMEO | 收/发超时 | 避免无限阻塞 |
| TCP_NODELAY | 禁用 Nagle(仅 TCP) | 低延迟小包场景 |
设置方式依语言而异:Python setsockopt(),Go SetReadDeadline 等,按用户语言给出对应 API。
高并发服务端通常用非阻塞 + I/O 多路复用或异步 API(如 asyncio、libuv、Go net 的 goroutine)。
单线程/进程同时等待多个 socket 可读/可写:
各语言往往有封装(如 Python selectors、Node 的 libuv、Go 的 net 包),按用户语言给出推荐用法而非手写 C。
/tmp/app.sock)或抽象命名(Linux)。Windows 上无原生 AF_UNIX(较新版本有 AF_UNIX),跨平台需考虑替代(如 TCP localhost 或命名管道)。