java 如何获取服务器端口

worktile 其他 384

回复

共3条回复 我来回复
  • 不及物动词的头像
    不及物动词
    这个人很懒,什么都没有留下~
    评论

    获取服务器端口的方法取决于你在使用Java编写的服务器应用程序的类型。以下是一些常见的方法:

    1. 使用Java原生的ServerSocket类:如果你使用Java编写了一个服务器应用程序,可以使用ServerSocket类来创建一个服务器套接字,并使用getLocalPort()方法获取服务器端口号。示例代码如下:
    import java.io.IOException;
    import java.net.ServerSocket;
    
    public class ServerExample {
        public static void main(String[] args) {
            try {
                ServerSocket serverSocket = new ServerSocket(0); // 传入0表示让操作系统自动分配一个可用端口
                int port = serverSocket.getLocalPort();
                System.out.println("Server port: " + port);
                // 省略其他代码...
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    

    这样,当运行服务器应用程序时,它将打印出分配给它的实际端口号。

    1. 使用Spring Boot:如果你使用Spring Boot框架来编写服务器应用程序,可以通过获取内嵌Tomcat服务器的connector属性来获取端口号。示例代码如下:
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
    import org.springframework.context.annotation.Bean;
    import org.springframework.stereotype.Component;
    
    @Component
    public class PortExample {
        @Autowired
        TomcatServletWebServerFactory tomcatServletWebServerFactory;
    
        @Bean
        public int port() {
            return tomcatServletWebServerFactory.getWebServer().getPort();
        }
    }
    

    这样,当服务器应用程序启动时,它将注入TomcatServletWebServerFactory的实例,并使用getPort()方法获取端口号。

    1. 使用Java系统属性:在运行服务器应用程序时,也可以通过Java系统属性来获取端口号。可以使用System.getProperty()方法来获取特定的系统属性。例如,对于Tomcat服务器,可以使用如下代码获取端口号:
    String port = System.getProperty("catalina.http.port");
    System.out.println("Tomcat port: " + port);
    
    1. 使用Java网络接口:如果你想获取运行服务器应用程序的网络接口的所有端口号,可以使用NetworkInterface类。以下是一个示例代码:
    import java.net.NetworkInterface;
    import java.net.SocketException;
    import java.util.Enumeration;
    
    public class PortExample {
        public static void main(String[] args) {
            try {
                Enumeration<NetworkInterface> networkInterfaces = NetworkInterface.getNetworkInterfaces();
                while (networkInterfaces.hasMoreElements()) {
                    NetworkInterface networkInterface = networkInterfaces.nextElement();
                    Enumeration<java.net.NetworkInterface.InetAddress> inetAddresses = networkInterface.getInetAddresses();
                    while (inetAddresses.hasMoreElements()) {
                        java.net.NetworkInterface.InetAddress inetAddress = inetAddresses.nextElement();
                        System.out.println(inetAddress.getHostAddress());
                    }
                    // 省略其他代码...
                }
            } catch (SocketException e) {
                e.printStackTrace();
            }
        }
    }
    

    这样,当运行这段代码时,它将打印出服务器应用程序所在网络接口的所有IP地址。

    总结:以上是几种常见的获取服务器端口的方法,具体方法取决于你使用Java编写的服务器应用程序的类型。

    1年前 0条评论
  • fiy的头像
    fiy
    Worktile&PingCode市场小伙伴
    评论

    在Java中,可以使用ServerSocket类来获取服务器端口。 ServerSocket类用于创建一个监听指定端口的服务器套接字,并等待客户端的连接。

    以下是获取服务器端口的步骤:

    1. 创建一个ServerSocket对象,并指定要监听的端口号。例如,要监听8080端口,可以使用以下代码:

      int port = 8080;
      ServerSocket serverSocket = new ServerSocket(port);
      
    2. 调用getLocalPort()方法获取实际绑定的端口号。例如,可以使用以下代码获取服务器实际绑定的端口号:

      int localPort = serverSocket.getLocalPort();
      System.out.println("服务器实际绑定的端口号是:" + localPort);
      

    完整的示例代码如下:

    import java.io.IOException;
    import java.net.ServerSocket;
    
    public class GetServerPortExample {
        public static void main(String[] args) {
            try {
                int port = 8080;
                ServerSocket serverSocket = new ServerSocket(port);
                int localPort = serverSocket.getLocalPort();
                System.out.println("服务器实际绑定的端口号是:" + localPort);
                serverSocket.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    

    以上就是在Java中获取服务器端口的方法。通过创建ServerSocket对象并调用getLocalPort()方法,可以获取实际绑定的端口号。

    1年前 0条评论
  • worktile的头像
    worktile
    Worktile官方账号
    评论

    在Java中,可以使用多种方式来获取服务器端口。下面分别介绍一些常见的方法。

    方法一:使用System类的getProperty()方法获取端口号
    Java中的System类提供了getProperty()方法,可以获取系统属性值。通过获取系统属性"server.port"的值,可以获取服务器的端口号。

    示例代码如下:

    String port = System.getProperty("server.port");
    System.out.println("服务器端口号:" + port);
    

    方法二:使用Spring Boot的Environment对象获取端口号
    如果你使用的是Spring Boot框架开发的应用程序,可以使用Environment对象获取服务器的端口号。

    示例代码如下:

    import org.springframework.core.env.Environment;
    
    // 注入Environment对象
    @Autowired
    private Environment environment;
    
    // 获取服务器端口号
    String port = environment.getProperty("server.port");
    System.out.println("服务器端口号:" + port);
    

    方法三:使用ServletContext对象获取端口号
    如果你正在开发一个基于Java Servlet的Web应用程序,可以使用ServletContext对象获取服务器的端口号。

    示例代码如下:

    import javax.servlet.ServletContext;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    public class ServerInfoServlet extends HttpServlet {
    
        @Override
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            ServletContext servletContext = request.getServletContext();
            int port = request.getServerPort();
            System.out.println("服务器端口号:" + port);
        }
    }
    

    方法四:使用Java网络编程获取端口号
    如果你需要通过网络连接获取服务器端口号,可以使用Java网络编程相关的API。

    示例代码如下:

    import java.net.InetAddress;
    import java.net.InetSocketAddress;
    import java.net.Socket;
    
    public class PortScanner {
    
        public static void main(String[] args) {
            String hostname = "localhost";
            int startPort = 1;
            int endPort = 65535;
            
            for (int port = startPort; port <= endPort; port++) {
                try {
                    Socket socket = new Socket();
                    InetSocketAddress address = new InetSocketAddress(hostname, port);
                    socket.connect(address, 1000);
                    System.out.println("端口号 " + port + " 是开放的");
                    socket.close();
                } catch (Exception e) {
                    // 端口关闭或连接超时时会抛出异常
                    // System.out.println("端口号 " + port + " 是关闭的");
                }
            }
        }
    }
    

    这是一个简单的端口扫描器,它可以遍历指定主机名的所有端口,判断端口是否开放。

    以上是几种常见的获取服务器端口号的方法。根据你的实际情况选择合适的方法,来获取服务器端口号。

    1年前 0条评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部