Сценарий заключается в том, что я передаю данные с одной машины на другую через TCP в своей домашней сети. Отправитель создает экземпляр TCPClient
и записывает данные в NetworkStream
, возвращенный GetStream()
. Насколько я понимаю, данные в NetworkStream
в конечном итоге отправляются в буфер на сетевой карте и передаются через физический носитель.
Однако, если соединение прервется, данные в MemoryStream
и данные в буфере сетевых карт будут потеряны, но в моем приложении данные были записаны в поток, и я мог наивно предположить, что данные были отправлены на прослушивание. гнездо, но это явно не так. Как только соединение будет восстановлено, приложение возобновит отправку данных там, где, насколько ему известно, передача была прервана, но при этом не учитываются данные, потерянные в буфере сетевой карты и объекте MemoryStream
.
Есть ли способ обойти эту проблему, кроме как написать собственный протокол прикладного уровня?