import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;
public class UDPScanner {
public static final int MIN_PORT_NUMBER = 1;
public static final int MAX_PORT_NUMBER = 65536;
/**
* @param host
* @param port
* @param timeOut
* @return
*/
public static boolean scan(String host, int port, int timeOut) {
boolean flag = false;
DatagramSocket socket = null;
byte[] data = host.getBytes();
try {
socket = new DatagramSocket();
socket.setSoTimeout(timeOut);
socket.setTrafficClass(0x04 | 0x10);
socket.connect(new InetSocketAddress(host, port));
socket.send(new DatagramPacket(data, data.length));
while (true) {
byte[] receive = new byte[4096];
DatagramPacket dp = new DatagramPacket(receive, 4096);
socket.receive(dp);
if (dp != null && dp.getData() != null) {
byte[] bs = dp.getData();
for (int i = 0; i < bs.length; i++) {
}
flag = true;
break;
}
}
} catch (Exception e) {
// e.printStackTrace();
} finally {
try {
if (socket != null) {
socket.close();
}
} catch (Exception e) {
}
}
return flag;
}
/**
* @param args
*/
public static void main(String[] args) {
String host = "192.168.18.112";
for (int i = 1; i <= 65535; i++) {
if (scan(host, i, 5000)) {
System.out.println("PORT listening:" + i);
}
}
}
}