62,614
社区成员
发帖
与我相关
我的任务
分享
ExecutorService executor = Executors.newSingleThreadExecutor();
executor.invokeAll(Arrays.asList(new Task(ipHead, tail, 6610)),
200, TimeUnit.MILLISECONDS);
executor.shutdown();
import java.net.*;
import java.util.Arrays;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
import java.io.*;
public class JPortScanner1 {
public JPortScanner1(String IP, int port) {
}
public static void main(String[] args) throws IOException,
InterruptedException {
String ipHead;
int lastPoint;
String IP = InetAddress.getLocalHost().getHostAddress();
lastPoint = IP.lastIndexOf('.');
ipHead = IP.substring(0, ++lastPoint);
for (int tail = 234; tail < 255; tail++) {
ExecutorService executor = Executors.newSingleThreadExecutor();
executor.invokeAll(Arrays.asList(new Task(ipHead, tail, 6610)),
200, TimeUnit.MILLISECONDS);
executor.shutdown();
}
}
}
class Task implements Callable<String> {
String ipHead;
int ipTail;
int port;
public Task(String ipHead, int ipTail, int port) {
this.ipHead = ipHead;
this.ipTail = ipTail;
this.port = port;
}
public String call() throws Exception {
Socket connect = new Socket();
connect.setSoTimeout(100);
try {
connect = new Socket(this.ipHead + ipTail, this.port);
connect.close();
System.out.println("Open port:" + this.ipHead + ipTail + " "
+ this.port);
} catch (UnknownHostException e) {
System.out.println("Unknown Port:" + this.ipHead + ipTail + " "
+ this.port);
} catch (IOException e) {
System.out.println("Unknown Port:" + this.ipHead + ipTail + " "
+ this.port);
}
System.out.println("Finished!");
return null;
}
}
package net;
import java.io.IOException;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.SocketAddress;
import java.nio.channels.SelectionKey;
import java.nio.channels.Selector;
import java.nio.channels.SocketChannel;
import java.util.Iterator;
import java.util.Set;
public class JPortScannerByNIO {
public static void main(String[] args) throws IOException {
int port = 80;
int retry = 10;// 重试次数
String ip = InetAddress.getLocalHost().getHostAddress();
String ipHead = ip.substring(0, ip.lastIndexOf('.') + 1);
Selector selector = Selector.open();
for (int tail = 60; tail < 65; tail++) {
SocketChannel channel = SocketChannel.open();
SocketAddress address = new InetSocketAddress(ipHead + tail, port);
channel.configureBlocking(false);
channel.connect(address);
channel.register(selector, SelectionKey.OP_CONNECT, address);// 这里你也可以用输入或者输出
}
while (retry-- > 0) {
// selector.select(1000 * 5);这里可以设置超时时间
selector.select();
Set<SelectionKey> keys = selector.selectedKeys();
for (Iterator<SelectionKey> it = keys.iterator(); it.hasNext();) {
SelectionKey key = it.next();
it.remove();
if (key.isConnectable()) {
System.err.println(key.attachment());
key.cancel();
}
}
}
}
}