【问题标题】:Why is listening on port with Netcat not working为什么用 Netcat 监听端口不起作用
【发布时间】:2012-07-01 22:40:26
【问题描述】:

我在 Ubuntu 上运行以下命令:

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

其中包括让它在 5004 侦听的命令。

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

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

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

【问题讨论】:

    标签: networking netcat


    【解决方案1】:

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

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

    “传输控制协议 (TCP),尽管已标准化为 RTP 使用,[5] 通常不用于 RTP 应用程序,因为 TCP 有利于 可靠性优于及时性。相反,大多数 RTP 实现基于用户数据报协议 (UDP)"

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

    【讨论】:

    • 谢谢!以下工作: nc -u -l -p 5004 -v >> /home/anders/Dropbox/netcatFiles/test
    • 我快速检查了一下,Harald Brinkhof 是正确的。 “-l -p 5004”不应该工作。我怀疑你有旧版本的 netcat。我有一个支持 -p 5004 语法的版本,报告版本 1.10,而在另一个盒子上,我有一个看起来更新的版本(更多选项等),它具有相同的手册页 Harald 引号。
    【解决方案2】:

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

    -p 源端口 指定 nc 应使用的源端口,受权限限制和可用性限制。在 con- 中使用此选项是错误的 与 -l 选项连接。

    所以只要指定

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

    【讨论】:

    • 但是,当我执行上述命令时,它不起作用。状态:警告:“0.0.19.140”的反向名称查找失败,当我这样做时:nc -u -l -p 5004 -v >> /home/anders/Dropbox/netcatFiles/test 它可以工作。我得到状态:从 127.0.0.1:32843 -> 127.0.0.1:5004(本地)接收数据包
    • 我用nc -l 5004 >> output.txt 测试了监听器,echo "tester" | nc 127.0.0.1 5004 测试了发送器。虽然它确实需要发件人的主机,但工作正常。
    • 感谢您的回复和评论!根据 Isernis 的最新评论和我收到后所做的一些研究:您链接到的手册和我的 nc 版本似乎是针对旧版本的 nc。手册内容为:nc -l -p port [-options] [hostname] [port]
    • ubuntu 实际上有(或至少曾经有)2 个 netcat 包:一个基于 openbsd nc,另一个是“传统的”,可能称为 netcat-traditional。这两个版本之间可能存在一些差异。
    • 我不确定谢谢的反义词是什么,但我需要添加 -p 才能使我的版本工作:netcat (The GNU Netcat) 0.7.1。好像我是在 Mac OS X 上通过 Macports 安装的(提示它位于此处/opt/local/libexec/gnubin/nc)。
    猜你喜欢
    • 2012-03-30
    • 1970-01-01
    • 2019-09-29
    • 2012-08-20
    • 2011-11-28
    • 2018-09-28
    • 2014-06-11
    • 2019-05-26
    • 1970-01-01
    相关资源
    最近更新 更多