这个问题紧跟着这个问题: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发行版上工作得很好,我应该在我的配置上做些什么改变?
发布于 2013-03-10 13:44:53
我同意duskwuff的观点,在任何地方都使用-p选项会更好,但回答你的问题:
你要做的一件事就是安装一个支持你想要的语法的netcat。我知道netcat-openbsd包支持它。我知道netcat-traditional包不支持。还有一个netcat6包,它也没有。然后你可以像这样显式地请求netcat的OpenBSD版本:
nc.openbsd -l 4242或者,您可以使用替代系统将此版本的netcat设置为在您发出nc命令时运行:
update-alternatives --set nc /bin/nc.openbsd如果这是您唯一安装的netcat,这将自动为您完成。
最后,您还可以选择删除您不喜欢的netcat (netcat-traditional或netcat6)。
发布于 2013-03-10 12:10:56
不要调整你的设置。netcat有多种实现;并不是所有的实现都是一样的。
特别是,netcat的“传统”版本,可能就是你已经安装在你的Debian系统上的,如果你省略了端口(“-p”)标志,它最终会做一些完全意想不到的事情:它最终会把最后一个参数当作主机名,传递给inet_aton(),它会把它转换成一个没有意义的IP地址(例如,1234将变成0.0.4.210),然后会忽略那个IP地址,并监听一个自动分配(可能是随机的)端口号的套接字。
这种行为显然是愚蠢的,所以其他一些netcat的实现会认为你指的是-p。但是,您正在使用的那个并不是这样的,所以请传递-p选项。
https://stackoverflow.com/questions/15318780
复制相似问题