use*_*267 5 sockets network-programming raw-sockets
对于非阻塞数据报套接字,如UDP,当我在套接字上调用write()/ send()时,write()/ send()或read()/ recv()的每次调用都只处理1个数据包.
我想知道原始套接字,如下所示,是否是数据报套接字?
int on = 1;
rawfd = socket(AF_INET, SOCK_RAW, IPPROTO_RAW);
setsockopt(IPPROTO_IP, IP_HDRINCL, &on, sizeof(on));
Run Code Online (Sandbox Code Playgroud)
这取决于您将包含在数据包中的 IP 标头类型(TCP 或 UDP)。实际上,包含 UDP 标头更容易,因为内核将管理一些 TCP 机制。
因此,您必须在数据包中添加 UDP 标头,然后它将成为数据报套接字。
| 归档时间: |
|
| 查看次数: |
1222 次 |
| 最近记录: |