java掃描埠
❶ java掃描區域網的埠
直接上代碼:
importjava.net.Socket;
importjava.text.SimpleDateFormat;
importjava.util.Date;
{
privateint[]p;
Socketss=null;
publicPortScanner(int[]p){
this.p=p;
}
publicstaticvoidmain(String[]args){
for(inti=0;i<65535;i=i+100){
newPortScanner(newint[]{i+1,i+100}).start();
}
}
@Override
publicvoidrun(){
for(inti=p[0];i<p[1];i++){
try{
ss=newSocket("8.8.8.8",i);
System.out.println("掃描到埠:"+i);
}catch(Exceptione){
//System.out.println("關閉埠:"+i);
}
}
}
}
❷ java如何做UDP埠掃描要用什麼函數
我不知道有沒有這樣的方法。
然後自己寫個循環
在用DatagramSocket(int port);這個構造方法的時候,假如拋異常了,就說明埠被佔用了。
❸ 請教大神,怎麼使用java實現UDP埠掃描
給你個UDP服務端與客戶端的示例:
服務端代碼:
importjava.net.DatagramPacket;
importjava.net.InetAddress;
importjava.net.MulticastSocket;
publicclassUDPMulticastServer{
finalstaticintRECEIVE_LENGTH=1024;
staticStringmulticastHost="224.0.0.1";
staticintlocalPort=9998;
publicstaticvoidmain(String[]args)throwsException{
InetAddressreceiveAddress=InetAddress.getByName(multicastHost);
if(!receiveAddress.isMulticastAddress()){//測試是否為多播地址
thrownewException("請使用多播地址");
}
intport=localPort;
=newMulticastSocket(port);
receiveMulticast.joinGroup(receiveAddress);
booleanisStop=false;
while(!isStop){
DatagramPacketdp=newDatagramPacket(newbyte[RECEIVE_LENGTH],RECEIVE_LENGTH);
receiveMulticast.receive(dp);
Stringdata=newString(dp.getData()).trim();
System.out.println(data);
if("exit".equals(data)){
System.out.println("程序退出");
isStop=true;
}
}
receiveMulticast.close();
}
}
客戶端代碼:
importjava.net.DatagramPacket;
importjava.net.InetAddress;
importjava.net.MulticastSocket;
publicclassUDPMulticastClient{
staticStringdestAddressStr="224.0.0.1";
staticintdestPortInt=9998;
staticintTTLTime=4;
publicstaticvoidmain(String[]args)throwsException{ InetAddressdestAddress=InetAddress.getByName(destAddressStr);
if(!destAddress.isMulticastAddress()){//檢測該地址是否是多播地址
thrownewException("地址不是多播地址");
}
intdestPort=destPortInt;
MulticastSocketmultiSocket=newMulticastSocket();
// intTTL=TTLTime;
// multiSocket.setTimeToLive(TTL);
byte[]sendMSG="exit".getBytes();
DatagramPacketdp=newDatagramPacket(sendMSG,sendMSG.length,destAddress,destPort);
multiSocket.send(dp);
multiSocket.close();
}
}
❹ 如何用java語言實現埠掃描器
使用 DatagramSocket(int port) 建立socket(套間字)服務。
將數據打包到DatagramPacket中去
通過socket服務發送 (send()方法)
關閉資源
public static void main(String[] args) {
DatagramSocket ds = null; //建立套間字udpsocket服務
try {
ds = new DatagramSocket(8999); //實例化套間字,指定自己的port
} catch (SocketException e) {
System.out.println("Cannot open port!");
System.exit(1);
}
byte[] buf= "Hello, I am sender!".getBytes(); //數據
InetAddress destination = null ;
try {
destination = InetAddress.getByName("192.168.1.5"); //需要發送的地址
} catch (UnknownHostException e) {
System.out.println("Cannot open findhost!");
System.exit(1);
}
DatagramPacket dp =
new DatagramPacket(buf, buf.length, destination , 10000);
//打包到DatagramPacket類型中(DatagramSocket的send()方法接受此類,注意10000是接受地址的埠,不同於自己的埠!)
try {
ds.send(dp); //發送數據
} catch (IOException e) {
}
ds.close();
}
}
接收步驟:
使用 DatagramSocket(int port) 建立socket(套間字)服務。(我們注意到此服務即可以接收,又可以發送),port指定監視接受埠。
定義一個數據包(DatagramPacket),儲存接收到的數據,使用其中的方法提取傳送的內容
通過DatagramSocket 的receive方法將接受到的數據存入上面定義的包中
使用DatagramPacket的方法,提取數據。
關閉資源。
import java.net.*;
public class Rec {
public static void main(String[] args) throws Exception {
DatagramSocket ds = new DatagramSocket(10000); //定義服務,監視埠上面的發送埠,注意不是send本身埠
byte[] buf = new byte[1024];//接受內容的大小,注意不要溢出
DatagramPacket dp = new DatagramPacket(buf,0,buf.length);//定義一個接收的包
ds.receive(dp);//將接受內容封裝到包中
String data = new String(dp.getData(), 0, dp.getLength());//利用getData()方法取出內容
System.out.println(data);//列印內容
ds.close();//關閉資源
}
}
❺ 如何 用java寫一個檢測埠的程序
進行一次http請求,看response返回是不是200,200就正確了。
❻ 修改一個JAVA源程序,使它能掃描指定IP的主機的UDP埠
單線程的
import java.net.*;
public class UDP
{
public static void main(String args[])
{
for (int port=0;port<=65535;port++) {
try {
DatagramSocket server=new DatagramSocket(port);
server.close();
}
catch(SocketException e) {
System.out.println("UDP埠"+port+"開放!");
}
}
}
}
希望能夠幫助到你,望採納!
❼ 如何用java實現tcp connect,tcp syn埠掃描
connect比較簡單,就是用Socket+多線程,每個埠創建一次連接,沒連上是不會往下執行的,會拋出異常,網上有源碼,都是這個方法。
syn和FIN還不知道咋實現,可以考慮用本地方法。
❽ 有沒有用java代碼操作nmap進行過埠掃描的
nmap埠狀態解析
open , 應用程序在該埠接收 TCP 連接或者 UDP 報文。
closed 關閉的埠對於nmap也是可訪問的, 它接收nmap探測報文並作出響應。但沒有應用程序在其上監聽。
filtered 由於包過濾阻止探測報文到達埠,nmap無法確定該埠是否開放。過濾可能來自專業的防火牆設備,路由規則 或者主機上的軟體防火牆。
unfiltered 未被過濾狀態意味著埠可訪問,但是nmap無法確定它是開放還是關閉。 只有用於映射防火牆規則集的 ACK 掃描才會把埠分類到這個狀態。
❾ java多線程TCP埠掃描程序有什麼用
你能說的詳細點嗎?
從字面上理解,應該是掃描計算機的埠,檢查是否可用之類的
❿ 用JAVA如何實現UDP埠掃描器
使用 DatagramSocket(int port) 建立socket(套間字)服務。
將數據打包到DatagramPacket中去
通過socket服務發送 (send()方法)
關閉資源
public static void main(String[] args) {
DatagramSocket ds = null; //建立套間字udpsocket服務
try {
ds = new DatagramSocket(8999); //實例化套間字,指定自己的port
} catch (SocketException e) {
System.out.println("Cannot open port!");
System.exit(1);
}
byte[] buf= "Hello, I am sender!".getBytes(); //數據
InetAddress destination = null ;
try {
destination = InetAddress.getByName("192.168.1.5"); //需要發送的地址
} catch (UnknownHostException e) {
System.out.println("Cannot open findhost!");
System.exit(1);
}
DatagramPacket dp =
new DatagramPacket(buf, buf.length, destination , 10000);
//打包到DatagramPacket類型中(DatagramSocket的send()方法接受此類,注意10000是接受地址的埠,不同於自己的埠!)
try {
ds.send(dp); //發送數據
} catch (IOException e) {
}
ds.close();
}
}
接收步驟:
使用 DatagramSocket(int port) 建立socket(套間字)服務。(我們注意到此服務即可以接收,又可以發送),port指定監視接受埠。
定義一個數據包(DatagramPacket),儲存接收到的數據,使用其中的方法提取傳送的內容
通過DatagramSocket 的receive方法將接受到的數據存入上面定義的包中
使用DatagramPacket的方法,提取數據。
關閉資源。
import java.net.*;
public class Rec {
public static void main(String[] args) throws Exception {
DatagramSocket ds = new DatagramSocket(10000); //定義服務,監視埠上面的發送埠,注意不是send本身埠
byte[] buf = new byte[1024];//接受內容的大小,注意不要溢出
DatagramPacket dp = new DatagramPacket(buf,0,buf.length);//定義一個接收的包
ds.receive(dp);//將接受內容封裝到包中
String data = new String(dp.getData(), 0, dp.getLength());//利用getData()方法取出內容
System.out.println(data);//列印內容
ds.close();//關閉資源
}
}
希望能夠幫助到你,望採納!