bap*_*ptx 4 unix sockets debian netcat
这个问题是这样的:在openSUSE中工作的套接字在Debian中不起作用?
在我的Debian系统上使用套接字时,我必须使用nc -l -p port_number来模拟我想要与之交谈的服务器.如果我使用的是nc -l port_number,则在使用套接字连接功能时会失败,而strerror(errno)会说"Connection refused".
没有-p选项的Netcat在其他Linux发行版上运行良好,我应该如何更改配置?
不要调整你的设置.netcat有多种实现方式; 并非所有人都表现得一样.
特别是,netcat的"传统"版本,可能就是你在Debian系统上安装的版本,如果你省略-p
("port")标志,它最终会做一些完全出乎意料的事情:它最终将最后一个参数视为一个主机名,传递给它inet_aton()
,将其转换为无意义的IP地址(例如,1234将变为0.0.4.210),然后将继续忽略该IP地址并在具有自动分配(可能是随机)端口的套接字上侦听数.
这种行为显然是愚蠢的,所以netcat的其他一些实现将假设你的意思-p
.但是,你正在使用的那个并没有通过-p
选项.
我同意 duskwuff 的观点,最好-p
在任何地方都使用该选项,但要回答你的问题:
您必须做的一件事是安装支持您想要的语法的 netcat。我知道该netcat-openbsd
软件包支持它。我知道netcat-traditional
包裹没有。还有一个netcat6
包,也没有。然后,您可以显式请求 OpenBSD 版本的 netcat,如下所示:
nc.openbsd -l 4242
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用替代系统来设置此版本的 netcat 在发出命令时运行nc
:
update-alternatives --set nc /bin/nc.openbsd
Run Code Online (Sandbox Code Playgroud)
如果这是您安装的唯一的 netcat,这将自动为您完成。
最后,您可以再次选择删除您不喜欢的 netcat(netcat-traditional
或netcat6
)。