当我尝试将[nc -l]命令与我的私有IP地址一起使用时,我可以创建一个客户端服务器模型。但是当我尝试使用我的公共IP地址时,它不起作用端口号。它给我以下错误: -
nc:无法分配请求的地址
为什么?
答案 0 :(得分:2)
您的问题是您的公共IP是路由器的IP,而不是您的计算机。
简化,您的网络可能看起来像这样(IP地址只是示例):
+--------------+ +-----------------+----------------+
| PC |-----|Router (internal)|Router(external)|---... Internet
| 192.168.0.10 | |192.168.0.1 |123.132.122.133 |
+--------------+ +-----------------+----------------+
您电脑的内部地址为192.168.0.10
,这是它知道的唯一地址。路由器将流量路由到其他网络;因为它有两个接口,内部接口为192.168.0.1
,面向互联网接口为123.132.122.133
。在您的PC上,您无法收听后一个地址,因为它是路由器的地址,而不是 PC
因此,解决方案是监听内部IP,并设置路由器将相应端口的流量转发到PC上的相应端口。但请注意安全隐患! (例如,将根壳打开到互联网可能不是最好的主意。)