2012-04-20 92 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

相关问题