2012-04-20 89 views
0

我正在開發一個android的端口掃描儀,但它似乎並沒有工作。這是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 – 2012-04-20 09:09:40

相關問題