我正在开发一个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"
,然后没有任何反应。
非常感谢任何帮助。
此致
答案 0 :(得分:4)
for (int i = startPort; i == endPort; i++)
第二个是条件if i==endport
,我等于startPort
,因为你在开始时这么说...... int i=startPort
必须是这样的:
for (int i = startPort; i <= endPort; i++)