为什么用Netcat监听端口不起作用

And*_*rud 6 networking netcat

我在Ubuntu上运行以下命令:

nc -l -p 5004 -v  >> /home/anders/Dropbox/netcatFiles/test
Run Code Online (Sandbox Code Playgroud)

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

我正在使用VLC向端口5004发送RTP流.当我在Wireshark中观察loopback接口时,我注意到ICMP包带有"Destination unreachable"消息.

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

我该怎么办才能让Netcat在5004端口收听?

LSe*_*rni 12

我认为您需要添加"-u"参数以使其在UDP上侦听.

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

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

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


Har*_*hof 7

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

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

所以只需指定

nc -l 5004 -v  >> /home/anders/Dropbox/netcatFiles/test
Run Code Online (Sandbox Code Playgroud)