「java校验端口」Java监听端口
本篇文章给大家谈谈java校验端口,以及Java监听端口对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、java中如何检测本机指定的UDP服务端口是否被占用?并且自动分配一个可用udp端口
- 2、如何用java语言实现端口扫描器
- 3、JAVA中如何判断某主机端口是否打开?????
- 4、利用java代码如何检测某端口号是否可用
- 5、java 如何检测本地可用的端口号?下面的方法没有效果,5000端口以及被占用了,但还是会报该端口为有效
- 6、java扫描局域网的端口
java中如何检测本机指定的UDP服务端口是否被占用?并且自动分配一个可用udp端口
用于接收和发送UDP的Socket实例。该类有3个构造函数:
DatagramSocket():通常用于客户端编程,它并没有特定监听的端口,仅仅使用一个临时的。程序会让操作系统分配一个可用的端口。
DatagramSocket(int port):创建实例,并固定监听Port端口的报文。通常用于服务端
DatagramSocket(int port, InetAddress localAddr):这是个非常有用的构建器,当一台机器拥有多于一个IP地址的时候,由它创建的实例仅仅接收来自LocalAddr的报文。
DatagramSocket具有的主要方法如下:
1)receive(DatagramPacket d):接收数据报文到d中。receive方法产生一个“阻塞”。“阻塞”是一个专业名词,它会产生一个内部循环,使程序暂停在这个地方,直到一个条件触发。
2)send(DatagramPacket dp):发送报文dp到目的地。
3)setSoTimeout(int timeout):设置超时时间,单位为毫秒。
4)close():关闭DatagramSocket。在应用程序退出的时候,通常会主动释放资源,关闭Socket,但是由于异常地退出可能造成资源无法回收。所以,应该在程序完成时,主动使用此方法关闭Socket,或在捕获到异常抛出后关闭Socket。
如何用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中如何判断某主机端口是否打开?????
Socket
client
=
null;
try{
client
=
new
Socket(IP,
port);
System.out.println("端口已开放");
client.close();
}catch(Exception
e){
System.out.println("端口未开放");
}
====================================================
这样就能正常捕获这个异常,不会阻止程序正常运行!
利用java代码如何检测某端口号是否可用
很简单,给你写个例子:
//检测端口8080到8090哪些可用哪些不可用
for(int i = 8080; i8090; i++){
try {
ServerSocket sskt = new ServerSocket(i);
System.out.println("端口[" +i + "]可用。");
} catch (IOException e) {
System.out.println("端口 [" + i + "] 被占用.");
}
}
java 如何检测本地可用的端口号?下面的方法没有效果,5000端口以及被占用了,但还是会报该端口为有效
不要用new InetSocketAddress(host, port));,直接使用new InetSocketAddress( port));,主机用绑定所有
你用0.0.0.0或者127.0.0.1都不对的
java扫描局域网的端口
直接上代码:
import java.net.Socket;
import java.text.SimpleDateFormat;
import java.util.Date;
public class PortScanner extends Thread {
private int[] p;
Socket ss = null;
public PortScanner(int[] p) {
this.p = p;
}
public static void main(String[] args) {
for (int i = 0; i 65535; i = i + 100) {
new PortScanner(new int[] { i + 1, i + 100 }).start();
}
}
@Override
public void run() {
for (int i = p[0]; i p[1]; i++) {
try {
ss = new Socket("8.8.8.8", i);
System.out.println("扫描到端口: " + i);
} catch (Exception e) {
// System.out.println("关闭端口: " + i);
}
}
}
}
java校验端口的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于Java监听端口、java校验端口的信息别忘了在本站进行查找喔。
发布于:2022-11-27,除非注明,否则均为
原创文章,转载请注明出处。