使用netcat来发送一个UDP包不绑定(Using netcat to send a UDP pa

2019-07-30 07:36发布

我试图使用netcat来模拟NAT穿越协议。

我有一个监听UDP包在端口6666,像这样一个实例:

NC -ul 6666

在另一个终端窗口,我想定期从端口6666发送一个UDP数据包(打开我的路由器上的返回路径。这将是在重复每20秒重新打开端口的脚本)

NC -u -p6666 mypinghost.com 4444

问题是,在与此消息ping呼叫netcat的失败:

NC:绑定失败:地址已在使用

这意味着收听者具有绑定到端口6666是从该端口发送,或者可能的是netcat的是试图绑定到6666到听阻塞另一个过程。

这是netcat的仅仅是如何写的,或者我可以胳肢它的一些方法,让我发送一个数据包不绑定到端口监听?

Answer 1:

NC -ul 6666

听在UDP端口6666。

NC -u -p6666 mypinghost.com 4444

使用UDP端口6666为源端口,发送到mypinghost:4444。

NC:绑定失败:地址已在使用

这将是对第二netcat调用,其中6666是已经通过第一个使用。

这意味着收听者具有绑定到端口6666是从该端口发送阻塞另一个过程

正确。

或者可能是netcat的是试图绑定到6666听。

而且 绝对是。 你告诉它要做到这一点,所以它做到了。

你所要做的是在同一台主机两个进程之间是不可能的。 只有一个进程可以同时使用一个特定的本地UDP端口,除非你使用SO_REUSEADDRESS ,它netcat似乎没有实现。

至于其他的海报已建议,解决的办法是使用一个单一的过程。



Answer 2:

我不相信你可以以这种方式使用的netcat。 我建议写一个简单的Python脚本,它在发送和接收任务的一个过程。 你完全可以认为端口仍然这样完成这两项任务。



文章来源: Using netcat to send a UDP packet without binding
标签: udp netcat