WEB开发网
开发学院软件开发Java Java网络编程从入门到精通(25):创建ServerSock... 阅读

Java网络编程从入门到精通(25):创建ServerSocket对象

 2009-09-22 00:00:00 来源:WEB开发网   
核心提示: 上面的输出结果中的addr是服务端绑定的IP地址,如果未绑定IP地址,Java网络编程从入门到精通(25):创建ServerSocket对象(2),这个值是0.0.0.0,在这种情况下,如果绑定某个端口时抛出 BindException异常,就说明这个端口已经打开,ServerSocket对象将

上面的输出结果中的addr是服务端绑定的IP地址,如果未绑定IP地址,这个值是0.0.0.0,在这种情况下,ServerSocket对象将监听服务端所有网络接口的所有IP地址。port永远是0。localport是ServerSocket绑定的端口,如果port值为0(不是输出结果的port,是ServerSocket构造方法的参数port),localport是一个随机选取的端口号。

在操作系统中规定1 ~ 1023为系统使用的端口号。端口号的最小值是1,最大值是65535。在Windows中用户编写的程序可以绑定端口号小于1024的端口,但在 Linux/Unix下必须使用root登录才可以绑定小于1024的端口。在前面的文章中曾使用Socket类来判断本机打开了哪些端口,其实使用 ServerSocket类也可以达到同样的目的。基本原理是用ServerSocket来绑定本机的端口,如果绑定某个端口时抛出 BindException异常,就说明这个端口已经打开,反之则这个端口未打开。

package server;

import java.net.*;

public class ScanPort
{
    public static void main(String[] args)
    {
        if (args.length == 0)
            return;
        int minPort = 0, maxPort = 0;
        String ports[] = args[0].split("[-]");
        minPort = Integer.parseInt(ports[0]);
        maxPort = (ports.length > 1) ? Integer.parseInt(ports[1]) : minPort;
        for (int port = minPort; port <= maxPort; port++)
            try
            {
                ServerSocket serverSocket = new ServerSocket(port);
                serverSocket.close();
            }
            catch (Exception e)
            {
                System.err.println(e.getClass());
                System.err.println("端口" + port + "已经打开!");
            }
    }
}

上一页  1 2 3 4 5 6 7  下一页

Tags:Java 网络编程 入门

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接