2011-07-14 28 views
1

Javaアプレットを使用してReal Client IPアドレスを取得しようとしています。私は最終的にPHPスクリプトでそれを使用して、セキュリティと認証を手助けしたいと考えています。さまざまなHTTPヘッダーが利用できず、簡単になりすますことができるため、PHPメソッドはどれも動作しません。だから私はこの方法を採用しています 実際のクライアントIPアドレスを見つけるためのJavaソケット

はしかし、私は私の簡単なアプレットをコンパイルすることはできません 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> 

おかげ

+0

*「私は、Javaを使用して実クライアントのIPアドレスを取得しようとしていますアプレット "*なぜですか? –

+0

答えは正しい - 私はあなたがそれを受け入れることを強く勧めます。 –

答えて

2

あなた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()); 
    } 
} 

または外socketを宣言することによってtry

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); 
    } 
} 
関連する問題