用于查找实际客户端IP地址的Java套接字
我正在尝试使用Java小程序获取真正的客户端IP地址。我希望最终在PHP脚本中使用它,以帮助实现安全性和身份验证。所有的PHP方法都无法工作,因为各种HTTP头都不可用,并且很容易被欺骗 因此,我采用了和中建议的方法 但是,我无法编译我的简单小程序。我是Java新手,所以有点困惑 代码是:用于查找实际客户端IP地址的Java套接字,java,Java,我正在尝试使用Java小程序获取真正的客户端IP地址。我希望最终在PHP脚本中使用它,以帮助实现安全性和身份验证。所有的PHP方法都无法工作,因为各种HTTP头都不可用,并且很容易被欺骗 因此,我采用了和中建议的方法 但是,我无法编译我的简单小程序。我是Java新手,所以有点困惑 代码是: import java.net.*; import java.io.*; public class SimpleSocketClient { public SimpleSocketClient()
import java.net.*;
import java.io.*;
public class SimpleSocketClient
{
public SimpleSocketClient()
{
try
{
Socket socket = new Socket("89.185.150.131", 80);
}
catch(Exception exc)
{
System.out.println("Error in initialising the network - " + exc.toString());
}
InetAddress addr = socket.getLocalAddress();
String hostAddr = addr.getHostAddress();
System.out.println("Addr: " + hostAddr);
}
}
编译时,出现以下错误:
C:\mba>javac SimpleSocketClient.java
SimpleSocketClient.java:18: cannot find symbol
symbol : variable socket
location: class SimpleSocketClient
InetAddress addr = socket.getLocalAddress();
^
1 error
C:\mba>
谢谢您的
套接字
变量在try
块内声明,因此在该块外无法访问。您可以通过将所有代码按入try
来进行轻微更改:
public SimpleSocketClient()
{
try
{
Socket socket = new Socket("89.185.150.131", 80);
InetAddress addr = socket.getLocalAddress();
String hostAddr = addr.getHostAddress();
System.out.println("Addr: " + hostAddr);
}
catch(Exception exc)
{
System.out.println("Error in initialising the network - " + exc.toString());
}
}
public SimpleSocketClient()
{
Socket socket = null;
try
{
socket = new Socket("89.185.150.131", 80);
}
catch(Exception exc)
{
System.out.println("Error in initialising the network - " + exc.toString());
}
if(socket != null) {
InetAddress addr = socket.getLocalAddress();
String hostAddr = addr.getHostAddress();
System.out.println("Addr: " + hostAddr);
}
}
或者通过在try
之外声明套接字
:
public SimpleSocketClient()
{
try
{
Socket socket = new Socket("89.185.150.131", 80);
InetAddress addr = socket.getLocalAddress();
String hostAddr = addr.getHostAddress();
System.out.println("Addr: " + hostAddr);
}
catch(Exception exc)
{
System.out.println("Error in initialising the network - " + exc.toString());
}
}
public SimpleSocketClient()
{
Socket socket = null;
try
{
socket = new Socket("89.185.150.131", 80);
}
catch(Exception exc)
{
System.out.println("Error in initialising the network - " + exc.toString());
}
if(socket != null) {
InetAddress addr = socket.getLocalAddress();
String hostAddr = addr.getHostAddress();
System.out.println("Addr: " + hostAddr);
}
}
“我正在尝试使用Java小程序获取真正的客户端IP地址。”为什么?答案是正确的-我强烈建议您接受它。