我正在开发一个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" ,然后没有任何反应。
任何帮助将不胜感激。
问候
I am developing an android port scanner but it doesn't seem to be working. Here's the code for the PortScan class.
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"); } } } }I am testing this code on an emulator (Android 2.3.3). I don't know whether the issue is with socket connections or TextView. When I run the program, the only output I get is the string before the for loop starts i.e "Scanning host "+ targetHost + "\n" and then nothing happens.
Any help will be greatly appreciated.
Regards
最满意答案
嗯...这永远不会奏效......
for (int i = startPort; i == endPort; i++)第二个是条件, if i==endport和i等于startPort因为你在开始时这么说... int i=startPort
必须是这样的:
for (int i = startPort; i <= endPort; i++)well ... this is never going to work...
for (int i = startPort; i == endPort; i++)The second is the condition if i==endport and i equals to startPort because you said so in the beginning... int i=startPort
It has to be like this:
for (int i = startPort; i <= endPort; i++)更多推荐
发布评论