我正在尝试制作一个应用程序,扫描特定打开端口(5050)的范围内的所有IP,并且如果它打开,请在LOG上写入一些消息。Android套接字在连接后卡住
继承人的代码:
public void run(){
for(int i=0;i<256;i++)
{
Log.d("NetworkScanner","attemping to contact 192.168.1."+i);
try {
Socket socket=new Socket(searchIP+i,5050);
possibleClients.add(searchIP);
socket.close();
Log.d("NetworkScanner"," 192.168.1."+i+" YEAAAHHH");
} catch (UnknownHostException e) {
Log.d("NetworkScanner"," 192.168.1."+i+" unavailable");
} catch (IOException e) {
e.printStackTrace();
}
}
}
编辑:这里有一个新的问题:即使主机在网上发现没有打开的端口扫描程序(用于环路)粘贴很长一段时间移动到下一个前。同时扫描每台主机也需要相当长的时间!
唷最终的解决方案是使用默认的构造函数Socket对象然后创建的InetAddr对象为主机,然后以毫秒为单位使用socket API的连接(的InetAddr,超时)函数超时(约300毫秒),扫描在仅300毫秒或更小的每个IP(小于200毫秒可能给出错误)和多线程中并行make扫描它快5秒来扫描范围内的所有IP地址..
Phew最终的解决方案是使用默认构造函数创建一个Socket对象,然后为主机创建InetAddr对象,然后使用连接(InetAddr,超时)函数以毫秒(约300毫秒)超时扫描每个IP在短短300毫秒或更小(小于200毫秒可能会给出错误)和多线程并行扫描化妆它一样快,5秒钟扫描范围内的所有IP地址.. 感谢大家的答复 – Allahjane