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