首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Netcat:使用nc -l port_number而不是nc -l -p port_number

Netcat:使用nc -l port_number而不是nc -l -p port_number
EN

Stack Overflow用户
提问于 2013-03-10 12:02:05
回答 2查看 5.8K关注 0票数 5

这个问题紧跟着这个问题:Sockets working in openSUSE do not work in Debian?

在我的Debian系统上使用套接字时,我必须使用nc -l -p port_number来模拟我想要与之对话的服务器。如果我正在使用nc -l port_number,当使用套接字连接功能时,它将失败,并且strerror(errno)将显示"Connection refused“。

没有-p选项的Netcat在其他Linux发行版上工作得很好,我应该在我的配置上做些什么改变?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-10 13:44:53

我同意duskwuff的观点,在任何地方都使用-p选项会更好,但回答你的问题:

你要做的一件事就是安装一个支持你想要的语法的netcat。我知道netcat-openbsd包支持它。我知道netcat-traditional包不支持。还有一个netcat6包,它也没有。然后你可以像这样显式地请求netcat的OpenBSD版本:

代码语言:javascript
复制
nc.openbsd -l 4242

或者,您可以使用替代系统将此版本的netcat设置为在您发出nc命令时运行:

代码语言:javascript
复制
update-alternatives --set nc /bin/nc.openbsd

如果这是您唯一安装的netcat,这将自动为您完成。

最后,您还可以选择删除您不喜欢的netcat (netcat-traditionalnetcat6)。

票数 4
EN

Stack Overflow用户

发布于 2013-03-10 12:10:56

不要调整你的设置。netcat有多种实现;并不是所有的实现都是一样的。

特别是,netcat的“传统”版本,可能就是你已经安装在你的Debian系统上的,如果你省略了端口(“-p”)标志,它最终会做一些完全意想不到的事情:它最终会把最后一个参数当作主机名,传递给inet_aton(),它会把它转换成一个没有意义的IP地址(例如,1234将变成0.0.4.210),然后会忽略那个IP地址,并监听一个自动分配(可能是随机的)端口号的套接字。

这种行为显然是愚蠢的,所以其他一些netcat的实现会认为你指的是-p。但是,您正在使用的那个并不是这样的,所以请传递-p选项。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15318780

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档