我有一个用java编写的遗留服务器应用程序,它在运行java6的windows2003机器上已经运行了六年。
我们最近将应用程序迁移到一台全新的windows2008机器上,运行最新版本的java。
尽管这个应用程序看起来运行良好,但有一个奇怪的问题
代码String remoteip=socket.getInetAddress().getHostAddress()似乎返回服务器机器的互联网IP,而不是返回远程客户端的IP。
在过去的6-7年里,它在Linux和Windows2003机器上都能正常工作。
为了仔细检查所有的设置,我在IIS上建立了一个小的php网站,并打印出了REMOTE_ADDr变量的值。它会打印出客户端的正确IP地址。
有什么会让java应用程序感到困惑的线索吗?
发布于 2012-07-21 20:12:28
Java文档这样写道:
getInetAddress()
Returns the local address of this server socket.可能以前您在同一台机器上运行服务器和客户端。
更具体地说:您可能有一个ServerSocket(sSocket)在等待来自客户端的连接。如果调用sSocket.getInetAddress(),您将获得服务器的IP地址。另一方面,ServerSocket的作用是绑定到IP地址和端口,并等待来自客户端的连接。当建立这样的连接时,sSocket.accept()方法返回一个套接字,该套接字表示服务器与该特定客户端(cSocket)的连接。调用cSocket.getRemoteAddress()将返回客户端的IP
https://stackoverflow.com/questions/11592025
复制相似问题