我正在寻找一个使用tftp命令集的实现,它可以从远程服务器获取数据,而是整体上获取数据,它在大小小于远程文件大小的本地环形缓冲区中获取数据并覆盖环圈后的数据。因此,如果任何进程在数据可用时使用数据,则成功,否则会丢失数据。例如,假设我在远程文件中有100 MB的数据,并且(想要创建?)本地10 MB大小的环形缓冲区。因此,它获取远程数据并将其放入环形缓冲区。在圈出10 MB后,它会开始覆盖。 任何建议将受到高度赞赏。提前谢谢。
答案 0 :(得分:3)
当您使用Linux时,数据将通过Linux套接字到达您的tftp客户端。通常,您可以在此套接字上调用read
来获取数据。
但是,如果要使用环形缓冲区,只需设置套接字选项PACKET_RX_RING
并从内存映射地址空间读取(根据{{3}在Linux 2.4 / 2.6 / 3.x中可用)而不是调用read
。无需自己实现环形缓冲区。
示例代码可以从那里链接的Wiki,the packet_mmap documentation或related Stack Overflow question获得。