Ответ
Работал со следующими ключевыми сетевыми протоколами:
Прикладной уровень (Application Layer):
- HTTP/HTTPS: Разработка RESTful API, клиентов для веб-сервисов, работа с заголовками, методами, кодами состояния.
- WebSocket: Для реализации двусторонней реальном времени связи в приложениях.
- FTP/SFTP: Автоматизация передачи файлов на удалённые серверы.
Транспортный уровень (Transport Layer):
- TCP: Надёжная потоковая передача данных (сокетное программирование, клиент-серверные приложения).
- UDP: Разработка функций, где важна скорость, а не гарантия доставки (например, телеметрия, голосовая связь).
Для работы с базами данных:
- Использовал протоколы СУБД через JDBC (для MySQL, PostgreSQL) и специфичные драйверы.
Пример HTTP-запроса на Java с использованием HttpURLConnection:
import java.net.HttpURLConnection;
import java.net.URL;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class HttpClientExample {
public static String sendGetRequest(String urlString) throws Exception {
URL url = new URL(urlString);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setConnectTimeout(5000);
connection.setReadTimeout(5000);
int responseCode = connection.getResponseCode();
System.out.println("Response Code: " + responseCode);
try (BufferedReader in = new BufferedReader(
new InputStreamReader(connection.getInputStream()))) {
String inputLine;
StringBuilder response = new StringBuilder();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
return response.toString();
}
}
} Ответ 18+ 🔞
А, вот ты про сети, про протоколы эти, ебать мои старые костыли! Ну, слушай, давай по полочкам, а то ты сейчас начнёшь про OSI модель, а у меня волнение ебать, терпения ноль ебать.
Короче, я там с этими протоколами, как обезьяна с гранатой, наработался, пиздец. На всех уровнях, блядь, отметился.
На прикладном, там, где юзеры пальцами тыкают:
- HTTP/HTTPS: Это ж моя хлеб-соль, сука. Всю жизнь эти RESTful API леплю. То заголовки там настраиваешь, то коды состояния ловишь — 404, 500, 200... 200 — это типа «всё пиздато», а 500 — это «ой, всё, сервер накрылся медным тазом». Клиенты для веб-сервисов — вообще отдельная песня, там столько подводных, блядь, камней, что волосы дыбом.
- WebSocket: А это когда надо, чтобы сервер сам мог на клиента наорать, без спроса. Чат там какой-нибудь или уведомления в реальном времени. Без него — нихуя, только запрашивай каждую секунду, как дурак.
- FTP/SFTP: Ну, это когда файлы туда-сюда гонять надо на серваки. Автоматизация, скрипты... А то вручную — это ж, блядь, до второго пришествия.
Транспортный уровень, где данные болтаются как в метро в час пик:
- TCP: Это наш надёжный друг, ёпта. Как почта заказная — пока не получишь уведомление о вручении, не успокоишься. Сокеты, клиент-сервер... Всё на нём. Надёжно, но иногда овердохуища бюрократии.
- UDP: А это, блядь, как крикнуть в толпу и надеяться, что кто-то услышал. Скорость — огонь, гарантий — ноль. Для телеметрии, для голосовухи — самое то. Отправил пакет и молись, чтобы он не потерялся где-нибудь в роутере.
Ну и с базами данных, само собой: Там свои заморочки. Через JDBC к MySQL, PostgreSQL цеплялся. У каждой СУБД свой драйвер, своя специфика, блядь. То квери сломается, то коннект отвалится — пидары налетели, короче.
А вот, смотри, примерчик, как на Java по-старинке, без этих твоих модных библиотек, HTTP-запрос отправить. Код не трогаю, он святой, но вокруг него можно похайпить.
import java.net.HttpURLConnection;
import java.net.URL;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class HttpClientExample {
public static String sendGetRequest(String urlString) throws Exception {
URL url = new URL(urlString);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setConnectTimeout(5000);
connection.setReadTimeout(5000);
int responseCode = connection.getResponseCode();
System.out.println("Response Code: " + responseCode);
try (BufferedReader in = new BufferedReader(
new InputStreamReader(connection.getInputStream()))) {
String inputLine;
StringBuilder response = new StringBuilder();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
return response.toString();
}
}
}
Вот это, блядь, классика жанра. Открыл соединение, таймауты поставил (а то зависнет на веки вечные), код ответа посмотрел. Если всё хорошо (responseCode 200), читаешь ответ, как книжку. А если не 200... ну, тут уже getErrorStream() читать надо, но это уже другая история, похуй. Главное — не забыть всё закрыть, а то ресурсы потекут, как из дырявого ведра. Вот так вот, в рот меня чих-пых, и живём.