2012-04-20 11 views
0

私はアンドロイドポートスキャナを開発していますが、動作していないようです。 PortScanクラスのコードは次のとおりです。Android portscanが動作しない

import java.net.InetAddress; 
import java.net.InetSocketAddress; 
import java.net.Socket; 
import java.net.UnknownHostException; 
import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.widget.TextView; 

public class PortScan extends Activity 
{ 

    String targetHost; 

    /* Starting port for scan */ 
    public int startPort = 1; 

    /* Ending port for scan */ 
    public int endPort = 100; 

    /* Adapter for ListView */ 
    //private PortScanAdapter scanAdapter; 

    /* Intent which invoked this class */ 
    private Intent scanIntent; 

    /* Address of the host to scan */ 
    InetAddress targetAddress; 

    /* Hostname of the target */ 
    String targetHostName; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     scanIntent = getIntent(); 
     prepareScan(); 
     setContentView(R.layout.port_scan_result); 
     startScan(); 
    } 

    private void prepareScan() 
    { 
     targetHost = scanIntent.getStringExtra("targetAddress"); 

     /* Get the IP Address of the target */ 
     try 
     { 
      targetAddress = InetAddress.getByName(targetHost); 
     } 
     catch(UnknownHostException e) 
     { 
      e.printStackTrace(); 
     } 

     /* Get the hostname of the target */ 
     try 
     { 
      targetHostName = targetAddress.getHostName(); 
     } 
     catch(Exception e) 
     { 
      targetHostName = targetHost;  
     } 

     /*TextView hostName = (TextView)findViewById(R.id.host); 
     hostName.setText(targetHostName); */ 
    } 


    private void startScan() 
    { 
     /* Socket to connect to the remote machine */ 
     Socket portSocket; 

     /* Textview which displays the scanresult */ 
     TextView scanText = (TextView)findViewById(R.id.portscanresult); 

     scanText.setText("Scanning host "+ targetHost + "\n"); 

     for (int i = startPort; i == endPort; i++) 
     { 
      try 
      { 
       portSocket = new Socket(); 
       portSocket.connect(new InetSocketAddress(targetAddress, i), 1000); 
       scanText.append("Target is listening on port "+ i + ": Port Open\n"); 
       portSocket.close(); 

      } 
      catch(Exception exception) 
      { 
       scanText.append("Target is not listening on port "+ i + ": Port Closed\n"); 
      } 
     } 
    } 


} 

私はこのコードをエミュレータ(Android 2.3.3)でテストしています。問題がソケット接続かTextViewかどうかはわかりません。私がプログラムを実行すると、forループが始まる前の文字列、つまり"Scanning host "+ targetHost + "\n"が出力され、何も起こりません。

ご協力いただきますようお願い申し上げます。

よろしく

答えて

4

も...これが仕事に行くことはありません...

for (int i = startPort; i == endPort; i++) 

秒が条件if i==endportであり、あなたが最初にそう言ったので、私はstartPortに等しいです... int i=startPort

それはこのようにすることがあります。

for (int i = startPort; i <= endPort; i++) 
+1

ありがとう!私は今、本当に馬鹿のように感じます:P –

関連する問題