之前给大家介绍了一下udp端口,相信对于udp是什么?有什么作用?大家应该都很清楚了,那么接下来要接着给大家讲到的就是java本地主机UDP端口扫描实现的一些内容,感兴趣的小伙伴可以一起来了解一下。
大多数时候,我们都需要知道本地主机UDP端口的使用情况,这样的话,在对UDP端口进行分配的时候就不会有冲突,下面的这个例子,通过编程实现了对本地主机UDP端口的扫描实现。
为了可以避免Unix机器上需要root用户才可以将服务和小于1024端口绑定,这里的话,仅仅扫描了1024以上的端口,假如,为Unix上的root用户或者是在Windows、Mac 机器上运行这个例子的话,可以将端口扩展到1024以下的端口。
运行这个程序即获得在本机运行的UDP端口使用情况。
实现:
使用DatagramSocket类创建对象,而DatagramSocket类继承了Object类。
DatagramSocket类共有3个构造器,每个在不同情况下使用。
下面是这个例子使用的构造器:
这个构造器通过参数port建立一个在特定端口监听输入的数据包的socket。
假如,socket不能创建,那么,抛出SocketException 异常。
通常在端口已有服务或者是权限不足的时候会抛出异常。
程序代码:
1、编写useUDPPortScanner类的基本框架,这个类仅包括main()方法,在这个方法中循环扫描端口,通过捕获异常知道已有哪些服务。
2、编写useUDPPortScanner类。
代码:
import java.net.*; public class useUDPPortScanner { public static void main(String[] args) { //循环扫描 for (int port = 1024; port <= 65535; port++) { try { // 如果在端口上已有服务,就捕获异常。 //新建DatagramSocket对象 DatagramSocket server = new DatagramSocket(port); //关闭服务 server.close(); } catch (SocketException e) { System.out.println("在 " + port + "端口上已有服务。"); } } } }
以上的实现方法你都了解了吗?希望对你的java编程之路可以有所帮助哦,更多java编程常见问题,欢迎多多关注奇Q工具网来进行了解哦。
推荐阅读: