我有几个通过互联网进行通信的gnuradio应用程序。流程图相当复杂,因此我将它们简化为最简单的形式,以重新创建我所看到的问题。
问题在于,当我调用客户端时,它按预期连接到服务器,但会立即抛出异常"值nan不能用目标整数类型表示"并且似乎来自wavfile接收器块。
我将服务器简化为简单的拨号音流程图,在TCP端口上显示拨号音信号。客户端可以连接到该端口并期望接收拨号音信号。
如果我在同一台计算机上运行客户端和服务器并使用localhost连接,则客户端连接正常并按预期工作。但是,如果客户端和服务器在远处(通过互联网)分开,那么我每次都会收到nan例外。
理论:
更新1: 将错误报告记录到gnuradio项目https://github.com/gnuradio/gnuradio/issues/1763
更新2: 套接字PDU块似乎发挥了重要作用。如果我将流的数据包长度参数调整为标记流块,以及套接字PDU块的MTU参数,我可以获得带有丢包(低MTU)的无错流或带有NaN异常的死流(高MTU) )。
通过互联网获得结果(延迟20-100毫秒) 这个wav文件是1k,可能在异常的同时被截断,但很难确定。
跨本地界面的wav结果(1毫秒或更短的延迟) 在本地界面上,客户端运行愉快,直到我停止它。收到的信号与预期一致。 一件小事 - 注意前几个样本的初始问题?不确定这是否是一个因素。可能不是。但是即使在本地接口上,数据也是前10毫秒左右的垃圾。