我有一台 Windows 7 计算机连接到 2 个子网,具有 IP 地址10.0.0.241和172.17.240.94。
这台机器上运行着第三方Java 语言应用程序内部启动 FTP 客户端会话,连接到位于172.17.240.65。
在某些时候,应用程序尝试下载文件,但随后显示“连接重置”错误(专有应用程序消息)。
使用嗅探器,我发现应用程序发出了错误的 FTP 命令:端口 10,0,0,240,x,y(其中 x、y 是任意端口号)。
因此问题显而易见:PORT 命令在两个可用 IP 地址中选择了错误的 IP 地址,FTP 服务器尝试连接其网络之外的地址。正确的命令应该是端口 172,17,240,94,x,y。
在其他具有 2 个 IP 的机器上,应用程序运行良好(并且 PORT 命令看起来也很好),但在其他机器上则不行...它似乎是随机的。
我无法访问该应用程序的源代码。
我曾尝试在 Windows 网络适配器配置中打乱 IP 的顺序,但没有成功。
有没有办法让 java 引擎选择正确的 IP 地址?
答案1
显然,Java 应用程序不会根据对等方的 IP 确定 PORT 的地址。它可能只是采用系统首先报告的地址,无论它是什么。也许这篇来自 MS 的知识库文章可以帮助您更改 IP 的顺序http://support.microsoft.com/kb/171320(它适用于较旧的 Windows 版本,但可能仍然适用)。您也可以尝试更改绑定顺序如何更改Windows 7中网络适配器的绑定顺序?或者物理地改变接口。
但是,将 Java 应用程序更改为使用 FTP 被动模式可能会更容易,这样它就不需要知道其自身网络的 IP。