7

我在 Ubuntu 上运行以下命令:

nc -l -p 5004 -v  >> /home/anders/Dropbox/netcatFiles/test

其中包括一个让它在 5004 监听的命令。

我正在使用 VLC 向端口 5004 发送 RTP 流。当我在 Wireshark 中观察环回接口时,我注意到带有消息“无法到达目标”的 ICMP 数据包。

打开另一个 VLC 并告诉它在端口 5004 播放传入数据,一切正常,并且播放流。

我应该怎么做才能让 Netcat 监听端口 5004?

4

2 回答 2

13

我认为您需要添加“-u”参数以使其侦听 UDP。

默认情况下,netcat 工作在 TCP 模式,但 RTP 协议是基于 UDP 的。

“传输控制协议 (TCP),虽然为 RTP 使用标准化 [5],但通常不用于 RTP 应用程序,因为 TCP 有利于可靠性而不是及时性。相反,大多数 RTP 实现都建立在用户数据报协议 (UDP) 之上”

http://en.wikipedia.org/wiki/Real-time_Transport_Protocol

于 2012-07-01T22:47:28.043 回答
7

不要使用 -p ( man nc (1) )

-p source_port 指定 nc 应该使用的源端口,受权限限制和可用性限制。将此选项与 -l 选项结合使用是错误的。

所以只需指定

nc -l 5004 -v  >> /home/anders/Dropbox/netcatFiles/test
于 2012-07-01T22:47:24.157 回答