Это обходит ваш первоначальный вопрос, но вы не сказали, какие данные вы отправляли. Почему вы решили использовать TCP-соединение в первую очередь? Как часто вы пишете эти блоки данных? Если это очень часто, я бы порекомендовал одну из двух вещей:
1) Держите TCP.Stream открытым. В противном случае вы можете исчерпать стек TCP доступных портов источника (1025-65535), если отправите более ~ 64000 блоков менее чем за 4 минуты. Это ухудшится, если на исходном компьютере будут открыты другие приложения. Как только это произойдет, ваше приложение будет зависать или давать ошибку, пока не станет доступен первый порт старше 4 минут.
2) Использовать UDP вместо TCP. Нет гарантии доставки, но если это данные в реальном времени, то вы не хотите использовать TCP, поскольку это может значительно задержать данные в реальном времени.
Если вы используете TCP, Client.Close () должен отправить FIN по стеку TCP, и, если другой хост не вышел из строя или сеть между ними не работала, должна гарантировать доставку.
Независимо от того, используете ли вы TCP или UDP, если вас беспокоит каждый блок данных, прибывающих в место назначения, вы должны создать некоторый уровень приложения, проверяющий, что все блоки прибыли в порядке и не повреждены ...