gpt4 book ai didi

java - socket.getInetAddress().getHostAddress() 奇怪的问题

转载 作者:可可西里 更新时间:2023-11-01 11:35:44 27 4
gpt4 key购买 nike

我有一个用 Java 编写的遗留服务器应用程序,在过去的六年里,它在运行 Java 6 的 Windows 2003 机器上运行良好。
我们最近将应用程序迁移到运行最新版本 java 的全新 windows 2008 机器上。
尽管该应用程序似乎运行良好,但存在一个奇怪的问题

代码 String remoteip=socket.getInetAddress().getHostAddress() 似乎返回服务器计算机的互联网 IP,而不是返回远程客户端的 IP。
在过去的 6 到 7 年里,这在 Linux 和 Windows 2003 机器上都能正常工作。

为了仔细检查所有设置,我在 IIS 上建立了一个小型 php 网站并打印了 REMOTE_ADDr 变量的值。它打印了客户端的正确 IP 地址。

关于什么可能会混淆 java 应用程序的任何线索?

最佳答案

Java 文档是这样说的:

 getInetAddress()
Returns the local address of this server socket.

可能以前您在同一台机器上运行服务器和客户端。

更具体地说:您可能有一个 ServerSocket(sSocket) 等待来自客户端的连接。如果您调用 sSocket.getInetAddress(),您将获得服务器的 IP 地址。另一方面,ServerSocket 的作用是绑定(bind)到 IP 地址和端口并等待来自客户端的连接。当建立这样的连接时,sSocket.accept() 方法返回一个 Socket,它表示服务器与特定客户端 (cSocket) 的连接。调用 cSocket.getRemoteAddress() 返回客户端的 IP

关于java - socket.getInetAddress().getHostAddress() 奇怪的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11592025/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com