
Hat
译者
⚠️ 注意
如果您发现了错误,欢迎 参与贡献。
Socket 模块封装了 OS 的网络套接字接口,与 IO 模块和事件循环深度集成。
应用层 (BGP/OSPF/RIP)
│
▼
Socket 模块 (抽象层)
│
├── Linux: netlink socket
├── FreeBSD: routing socket
├── OpenBSD: routing socket
└── Generic: TCP/UDP socket
│
▼
事件循环 (Event Loop)
├── socket 可读 → 触发 RX 事件 → 协议处理入站数据
├── socket 可写 → 触发 TX 事件 → 协议发送出站数据
└── socket 错误 → 触发 ERR 事件 → 协议处理异常| 函数 | 说明 |
|---|---|
sk_open(sk) | 打开 socket 并绑定/连接 |
sk_send(sk, len) | 发送数据(非阻塞) |
sk_send_to(sk, len, addr) | 发送数据到指定地址 |
sk_receive(sk) | 接收数据(事件驱动) |
sk_close(sk) | 关闭 socket |
sk_set_rx_hook(sk, hook) | 设置接收回调 |

译者
原文作者: <Ondrej Filip>, <Martin Mares>, <Maria Matejka>, <Ondrej Zajicek> 原文链接: https://bird.network.cz/?get_doc&v=20&f=prog-8.html#ss8.7 原文标题: 8.7 Sockets
遵循协议: CC BY-NC-SA 4.0 / 译者: hat / 翻译时间: 2026-05-01 / 本文链接: https://bird.xmsl.dev/docs/developer-guide/8-7-sockets.html