Tftp 命令实现以在本地环形缓冲区中获取远程数据
Tftp commands implementation to fetch remote data in a local ring buffer
我正在寻找一个使用 tftp 命令集的实现,它可以从远程服务器获取数据,而不是作为一个整体完整地获取数据,它在大小小于远程文件大小的本地环形缓冲区中获取数据,并且它会在环被圈出后覆盖数据。因此,如果任何进程在数据可用期间使用数据,它就会成功,否则它会丢失数据。例如,假设我在远程文件中有 100 MB 的数据,并且(想要创建?)本地 10 MB 大小的环形缓冲区。因此,它获取远程数据并将其放入环形缓冲区。圈出10MB后开始覆盖。
任何建议将不胜感激。提前致谢。
当您使用 Linux 时,数据将通过 Linux 套接字到达您的 tftp 客户端。通常,您会在此套接字上调用 read
来获取数据。
但是,如果您想使用环形缓冲区,您只需设置套接字选项 PACKET_RX_RING
并从内存映射地址 space 读取(在 Linux 2.4/2.6 中可用/3.x 根据 the packet_mmap documentation) 而不是调用 read
。不需要自己实现环形缓冲区。
示例代码可从那里链接的 Wiki 获得,来自 related Stack Overflow question, or from various websites。
我正在寻找一个使用 tftp 命令集的实现,它可以从远程服务器获取数据,而不是作为一个整体完整地获取数据,它在大小小于远程文件大小的本地环形缓冲区中获取数据,并且它会在环被圈出后覆盖数据。因此,如果任何进程在数据可用期间使用数据,它就会成功,否则它会丢失数据。例如,假设我在远程文件中有 100 MB 的数据,并且(想要创建?)本地 10 MB 大小的环形缓冲区。因此,它获取远程数据并将其放入环形缓冲区。圈出10MB后开始覆盖。 任何建议将不胜感激。提前致谢。
当您使用 Linux 时,数据将通过 Linux 套接字到达您的 tftp 客户端。通常,您会在此套接字上调用 read
来获取数据。
但是,如果您想使用环形缓冲区,您只需设置套接字选项 PACKET_RX_RING
并从内存映射地址 space 读取(在 Linux 2.4/2.6 中可用/3.x 根据 the packet_mmap documentation) 而不是调用 read
。不需要自己实现环形缓冲区。
示例代码可从那里链接的 Wiki 获得,来自 related Stack Overflow question, or from various websites。