使用 BusyBox 版本的 netcat 监听 TCP 端口

15

我需要在Linux嵌入式盒子内监听任意端口。我选择了6660端口,因为它本来就是用于非加密连接的,而且由于运行自定义Linux操作系统的Linux盒子没有打开很多端口。我发现netcat(命令行上的nc)是最简单和最好的解决方案,因此我不必编写C程序来实现这个目的。

我已经掌握了命令和选项,并实现了从另一台PC上以最简单的方式监听纯文本的PC:

sven@sven:~$ nc 192.168.4.110 6660
sven@sven:~$ hello there!
anotherUser@userg:~$ nc -l -p 6660
anotherUser@userg:~$ hello there!

但情况是netcat工具是随着busybox软件包一起安装在那个Linux系统上的。我不确定如何使用什么语法来监听一个端口(例如6660)。我总是得到相同的对话框:

~ # nc -l -p 6660
BusyBox v1.17.1 (Debian 1:1.17.1-8) multi-call binary.
Usage: nc [IPADDR PORT]    
Open a pipe to IP:PORT

我也尝试了很多其他方法来实现监听,但无法完成。 我假设至少会给我任何选项?

nc -h
或者
nc --help

不要提供任何"负面"选项。

但是将文本从Linux嵌入式盒子发送到我的PC可以正常工作:

~ # nc 192.168.4.130 6660
fsdf
tere
^C
~ #
sven@sven:~$ nc -l -p 6660
fsdf
tere

Linux嵌入式盒子在同一局域网内具有完全功能的网络连接,并且存在eth0和lo链路

eth0      Link encap:Ethernet  HWaddr D0:E3:47:00:03:5F  
          inet addr:192.168.4.179  Bcast:192.168.4.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:28046281 errors:0 dropped:0 overruns:0 frame:0
          TX packets:428464 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:2458890234 (2.2 GiB)  TX bytes:83021395 (79.1 MiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:2282 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2282 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:444956 (434.5 KiB)  TX bytes:444956 (434.5 KiB)

你成功了!

1个回答

25

这里是busybox的nc实现的手册页面

正确的语法为

nc -l -p <port>

问题在于,我认为你所使用的busybox版本没有编译nc监听功能。实际上,在构建时有一个配置选项NC_SERVER需要启用才能打开该功能。

你可以从这个版本中构建另一个nc,并将二进制文件复制到嵌入式主机上吗?您可能需要构建交叉编译器环境。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接