在本地环缓冲区中获取远程数据的Tftp命令实现



我正在寻找一个使用tftp命令集的实现,该命令集可以从远程服务器获取数据,而不是完全作为一个整体获取数据,它在大小小于远程文件大小的本地环缓冲区中获取数据,并且它在环已圈出后覆盖数据。因此,如果任何进程在数据可用期间使用数据,它就会成功,否则就会丢失数据。例如,假设我在远程文件中有100 MB的数据,并且(想要创建?)本地大小为10 MB的环缓冲区。因此,它获取远程数据并将其放入环缓冲区。在圈出10mb后,它开始覆盖。任何建议都将受到高度赞赏。

在使用Linux时,数据将通过Linux套接字到达tftp客户机。通常,您将在此套接字上调用read来获取数据。

然而,如果你想使用环缓冲区,你可以简单地设置套接字选项PACKET_RX_RING并从内存映射的地址空间(在Linux 2.4/2.6/3中可用)中读取。(根据packet_mmap文档),而不是调用read。没有必要自己实现一个环缓冲区。

示例代码可从链接的Wiki、相关的Stack Overflow问题或各种网站获得。

最新更新