Ответ
В Java для удаленного подключения используются разные API в зависимости от протокола.
Основные протоколы и инструменты:
| Протокол | Типичное использование | Ключевой Java-класс/Библиотека |
|---|---|---|
| HTTP/HTTPS | REST API, веб-сервисы | HttpURLConnection, HttpClient (Java 11+) |
| TCP/IP (сокеты) | Кастомные протоколы, чаты | Socket, ServerSocket |
| SSH | Удаленное управление сервером | JSch библиотека |
| RMI | Распределенные Java-приложения | java.rmi пакет |
Пример 1: TCP-соединение с помощью Socket.
try (Socket socket = new Socket("example.com", 8080);
OutputStream out = socket.getOutputStream();
InputStream in = socket.getInputStream()) {
// Отправка данных
String message = "Hello, Server!";
out.write(message.getBytes(StandardCharsets.UTF_8));
out.flush();
// Чтение ответа
byte[] buffer = new byte[1024];
int bytesRead = in.read(buffer);
System.out.println("Ответ: " + new String(buffer, 0, bytesRead));
} catch (IOException e) {
e.printStackTrace();
}
Пример 2: Подключение по SSH с JSch.
import com.jcraft.jsch.*;
JSch jsch = new JSch();
Session session = jsch.getSession("username", "hostname", 22);
session.setPassword("password");
session.setConfig("StrictHostKeyChecking", "no"); // Для теста (в prod используйте known_hosts)
session.connect();
// Теперь можно открыть Channel для выполнения команд
ChannelExec channel = (ChannelExec) session.openChannel("exec");
channel.setCommand("ls -la");
channel.connect();
// ... чтение вывода команды
channel.disconnect();
session.disconnect();