gpt4 book ai didi

c - Linux/C udp 发送方法

转载 作者:行者123 更新时间:2023-12-05 01:29:10 25 4
gpt4 key购买 nike

在 C 中发送 UDP 数据包的唯一方法是使用 send/sendo/write/... 调用。

这些问题是,对于每个数据包,我需要从用户空间执行一个新调用。

有谁知道是否有一个允许类似的功能

send_packets( int socket, const char* buffer, int packetSize )

哪个会自动将缓冲区中的数据拆分为大小为 packetSize(例如 1472)的数据包,然后将它们作为 UDP 数据包发送?

谢谢

最佳答案

您可以批处理原始数据包,但不能批处理更高级别的协议(protocol)。低级 API 用于 Wireshark 等实用程序。

在 Linux 上,您可以修改内核以实现 sendmmsg() API 类似于 recvmmsg()但是当我这样做时,由于界面实际使用起来很麻烦,我只记录了性能损失。

这种 API 的用户群非常有限,就像您真的想要高性能一样,只需迁移到 InfiniBand 或使用 Solarflare (OpenOnload) 或 Mellanox 提供的用户空间套接字 API,该 API 依赖于它们的 10 GigE RDMA over Ethernet 接口(interface)。

关于c - Linux/C udp 发送方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6332338/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com