Kiedy wysyłam()/zapisuję() wiadomość przez strumień TCP, jak mogę sprawdzić, czy te bajty zostały pomyślnie dostarczone?Sprawdzanie, czy został dostarczony komunikat dotyczący tcp.
Odbiornik potwierdza odbiór bajtów przez tcp, więc stos tcp nadawców powinien znać.
Ale kiedy wysyłam() niektóre bajty, send() natychmiast zwraca, nawet jeśli pakiet nie mógł (jeszcze) być dostarczony, przetestowałem to na Linuksie 2.6.30 używając strace na netcat, wyciągając mój kabel sieciowy przed wysyłanie niektórych bajtów.
Właśnie opracowuję aplikację, w której bardzo ważne jest, aby wiedzieć, czy wiadomość została dostarczona, ale wdrożenie funkcji tcp ("ack dla wiadomości # 123") wydaje się niezręczne, musi istnieć lepszy sposób.
Fakty są słuszne, ale nie podoba mi się frazowanie. TCP jest niezawodnym protokołem, ** usłyszysz o nim, jeśli transmisja się nie powiedzie. Fakt, że nie trzeba żądać potwierdzenia ACK od strony zdalnej, to funkcja, a nie błąd. "Najlepszym" sposobem radzenia sobie z tym jest ** ignorowanie ** problemu na poziomie wywołań systemowych i bajtów. Jeśli potrzebujesz wyniku, zrób to na poziomie protokołu, a nie gniazd. –