【问题标题】:Java Socket to find real client IP Address用于查找真实客户端 IP 地址的 Java Socket
【发布时间】:2011-07-14 11:23:44
【问题描述】:

我正在尝试使用 Java 小程序获取真实客户端 IP 地址。我想最终在 PHP 脚本中使用它,以帮助实现安全性和身份验证。所有的 PHP 方法都不起作用,因为各种 HTTP 标头不可用并且很容易被欺骗。

所以我采用Get the correct local IP address from java applethttp://www.jguru.com/faq/view.jsp?EID=15832建议的方法

但是,我无法编译我的简单小程序。我是 Java 新手,所以有点困惑。

代码是:

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>

谢谢

【问题讨论】:

  • “我正在尝试使用 Java 小程序获取真实客户端 IP 地址。” 为什么?
  • 答案是正确的——我强烈建议你接受它。

标签: java


【解决方案1】:

您的socket 变量在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());
    }
}

或者通过在try之外声明socket

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);
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-19
    • 2015-09-07
    • 2013-08-18
    • 2011-09-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多