首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >模拟流数据

模拟流数据
EN

Stack Overflow用户
提问于 2012-05-09 03:30:02
回答 3查看 1.1K关注 0票数 4

我正在尝试编写一个程序,它将从平面数据文件中读取数据,并模拟流式传输,这样我就可以测试读取流式数据的程序,而不必连接和启动流式硬件。

实现这一目标的更现实的方法是什么?我需要它以不同的速度流取决于硬件即时通信模拟。

到目前为止,我的两个想法是一个写入命名管道的程序,或者一个以我需要的速率写入虚拟串行端口的程序。

有没有一种更好的(更现实的)方法来模拟流数据?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-05-09 03:50:35

设置一个后台进程,以您想要的任何速率将文件写入套接字。在Perl中,

代码语言:javascript
复制
use Socket;
socketpair my $A, my $B, AF_UNIX, SOCK_STREAM, PF_UNSPEC;

if (fork() == 0) {
    stream();
    exit;
}

while (<$A>) {
    print;
}

sub stream {
    # output 1024 bytes/sec
    select $B; $| = 1;          # disable output buffering
    open my $fh, '<', '/file/to/stream';
    my $buffer;
    while (my $n = read $fh, $buffer, 1024) {
        sleep 1;
        print $B $buffer;
    }
    close $fh;
}
票数 4
EN

Stack Overflow用户

发布于 2012-05-09 03:40:35

我倾向于以最接近流数据原始源的方式模拟流。例如,如果您通常从网络套接字获取流,则使用网络套接字进行模拟;如果您有串行端口,则使用虚拟串行端口,等等。否则,您将需要用于流消费者代码的适配器(但我假设您已经知道所有这些)。

除此之外,您还需要一个速率限制算法来控制要发送的数据量。通过快速搜索,我找到了this,但肯定还有更复杂、更复杂的算法。YMMV.

当然,这假设您知道如何为流的消费者创建有效的数据/数据包。

票数 2
EN

Stack Overflow用户

发布于 2012-05-09 20:15:36

您可以尝试通过查看trickle (一个用户空间带宽整形器)来节省一些编码时间。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10505195

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档