Java中常用的端口号有哪些

在网络通信中,端口号用于标识一台计算机上的特定进程或服务。Java作为一门广泛应用于网络通信的编程语言,开发人员需要了解常用的端口号,以便在编写网络应用程序时正确配置和使用。

常见的端口号

以下是一些常见的端口号及其对应的服务或协议:

  1. 80端口:用于HTTP协议,是Web服务器默认的端口号。在Java中,可以使用HttpServer类来创建简单的HTTP服务器。
import com.sun.net.httpserver.HttpServer;

public class SimpleHttpServer {
    public static void main(String[] args) throws Exception {
        HttpServer server = HttpServer.create(new InetSocketAddress(80), 0);
        server.createContext("/", new MyHandler());
        server.setExecutor(null);
        server.start();
    }
}

class MyHandler implements HttpHandler {
    @Override
    public void handle(HttpExchange exchange) throws IOException {
        String response = "Hello, World!";
        exchange.sendResponseHeaders(200, response.length());
        OutputStream os = exchange.getResponseBody();
        os.write(response.getBytes());
        os.close();
    }
}
  1. 443端口:用于HTTPS协议,是加密的HTTP协议。在Java中,可以使用SSLServerSocket类来创建简单的HTTPS服务器。
import javax.net.ssl.SSLServerSocket;
import javax.net.ssl.SSLServerSocketFactory;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;

public class SimpleHttpsServer {
    public static void main(String[] args) throws IOException {
        SSLServerSocketFactory sslServerSocketFactory = (SSLServerSocketFactory) SSLServerSocketFactory.getDefault();
        SSLServerSocket sslServerSocket = (SSLServerSocket) sslServerSocketFactory.createServerSocket(443);

        while (true) {
            Socket socket = sslServerSocket.accept();
            BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            PrintWriter writer = new PrintWriter(socket.getOutputStream(), true);

            String request = reader.readLine();
            String response = "Hello, World!";
            writer.println("HTTP/1.1 200 OK");
            writer.println("Content-Length: " + response.length());
            writer.println();
            writer.println(response);

            writer.close();
            reader.close();
            socket.close();
        }
    }
}
  1. 22端口:用于SSH协议,是一种远程登录的安全协议。在Java中,可以使用JSch库来进行SSH连接。
import com.jcraft.jsch.*;

public class SimpleSshClient {
    public static void main(String[] args) throws JSchException {
        JSch jsch = new JSch();
        Session session = jsch.getSession("username", "hostname", 22);
        session.setPassword("password");
        session.setConfig("StrictHostKeyChecking", "no");
        session.connect();

        ChannelExec channel = (ChannelExec) session.openChannel("exec");
        channel.setCommand("ls");
        channel.connect();

        channel.disconnect();
        session.disconnect();
    }
}
  1. 3306端口:用于MySQL数据库。在Java中,可以使用JDBC来连接和操作MySQL数据库。
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class SimpleMysqlClient {
    public static void main(String[] args) throws Exception {
        String url = "jdbc:mysql://localhost:3306/database";
        String username = "username";
        String password = "password";

        Connection connection = DriverManager.getConnection(url, username, password);
        Statement statement = connection.createStatement();
        ResultSet resultSet = statement.executeQuery("SELECT * FROM table");
        while (resultSet.next()) {
            System.out.println(resultSet.getString("column"));
        }
        resultSet.close();
        statement.close();
        connection.close();
    }
}
  1. 25端口:用于SMTP协议,即邮件发送协议。在Java中,可以使用JavaMail库来发送电子邮件。
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;

public class SimpleSmtpClient {
    public static void main(String[] args) throws MessagingException {
        String host = "smtp.gmail.com";
        String username = "your-email@gmail.com";
        String password = "your-password";

        Properties props = new Properties();
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.starttls.enable", "true");
        props.put("mail.smtp.host", host);
        props.put("mail.smtp.port", "25");

        Session session = Session.getInstance(props, new Authenticator() {
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(username, password);
            }
        });

        Message message = new MimeMessage(session);
        message.setFrom