可以从 RPi 连接到笔记本电脑,但不能以其他方式连接

可以从 RPi 连接到笔记本电脑,但不能以其他方式连接

我正在用 Java 开发一个服务器客户端应用程序(基于命令行)。我想在我的 Raspberry Pi (RPi) 上运行它,但事实证明我无法从笔记本电脑登录到我的服务器部分。问题是,当运行我的应用程序的服务器部分(套接字、端口 4444)时,我可以从 RPi 连接 telnet,没有任何问题。

当我在 RPi 上运行服务器部分时,无法建立连接。我对 Linux 不太熟悉,但这是我需要在 iptables 中做的事情吗?其他建议?

答案1

对于初学者来说,我会确保防火墙(iptables)不是问题。您可以在 RPi 上使用以下命令进行确认:

$ iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination    

如果防火墙看起来正常(如上所述),则启动您的 Java 应用程序,并使用以下命令确认它正在侦听正确的端口:

$ netstat -anpt
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 127.0.0.1:9090          0.0.0.0:*               LISTEN      970/xbmc.bin
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      970/xbmc.bin
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      936/sshd
tcp        0      0 0.0.0.0:445             0.0.0.0:*               LISTEN      1086/smbd
tcp        0      0 192.168.1.85:22         192.168.1.20:34971      ESTABLISHED 6762/0
tcp        0      0 :::53                   :::*                    LISTEN      829/connmand
tcp        0      0 :::22                   :::*                    LISTEN      936/sshd
tcp        0      0 :::445                  :::*                    LISTEN      1086/smbd

此命令显示每个守护程序正在侦听的 IP 地址和端口。例如,以下行:

tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      970/xbmc.bin

显示进程 ID 为 970 的进程 (xbmc.bin) 正在所有接口 (0.0.0.0) 上侦听端口 80。最后一位“所有接口”意味着如果有多个网络接口(以太网、wifi 等),则守护进程将接受来自其中任何一个的连接。

如果它只是表示一个 IP 地址,例如 192.168.1.10,那么守护程序将只接受来自分配有该 IP 地址的接口的连接。

最后要注意的是,上述守护进程将接受的连接类型是 TCP。另一种类型是 UDP,该守护程序不接受这种类型。

相关内容