Встречается на собеседованиях • сегодня

Как избежать пропажу пакета при отправке данных

В Java для надежной передачи данных используйте TCP вместо UDP, так как TCP гарантирует доставку. Для UDP реализуйте подтверждение получения (ACK) и повторную отправку при таймауте.

Пример с TCP:

java
try (Socket socket = new Socket("host", port);
     OutputStream out = socket.getOutputStream()) {
    out.write(data);
} catch (IOException e) {
    // Обработка ошибки
}

Для UDP с подтверждением:

java
DatagramSocket socket = new DatagramSocket();
byte[] buffer = new byte[1024];
DatagramPacket packet = new DatagramPacket(data, data.length, address, port);
socket.send(packet);

// Ждем ACK
socket.setSoTimeout(1000);
try {
    socket.receive(new DatagramPacket(buffer, buffer.length));
} catch (SocketTimeoutException e) {
    // Повторная отправка
}

Дополнительные меры:

  • Контрольные суммы для проверки целостности
  • Уникальные идентификаторы пакетов
  • Очередь отправки с повторами
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы