Сценарият е, че предавам данни от една машина на друга чрез TCP в моята домашна мрежа. Подателят създава TCPClient
и записва данни в NetworkStream
, върнати от GetStream()
. Разбирам, че данните в NetworkStream
в крайна сметка се изпращат до буфера на NIC и се предават по физическия носител.
Въпреки това, ако връзката бъде прекъсната, данните в MemoryStream
и данните в буфера на NIC ще бъдат загубени, но в моето приложение данните бяха записани в потока и можех наивно да предположа, че данните са изпратени на слушане гнездо, но явно не е така. След като връзката бъде възстановена, приложението ще възобнови изпращането на данни там, където, доколкото му е известно, предаването е било прекъснато, но това не взема предвид данните, загубени в буфера на NIC и MemoryStream
обекта.
Има ли някакъв начин за разрешаване на този проблем, освен да напиша собствен протокол на приложния слой?