В соответствии с msdn тайм-ауты определены следующим образом:
Receive Timeout :Gets or sets the interval of time that a connection can remain inactive, during which no application messages are received, before it is dropped.
Send Timeout : Gets or sets the interval of time provided for a write operation to complete before the transport raises an exception.
Я бы оставил тайм-аут приема по умолчанию (бесконечный), поэтому при наличии свободного канала соединение не будет закрыто.Если у вас не запущен keep-alive, который периодически отправляет сообщение с нулевыми байтами.
Тайм-аут отправки, вы должны быть осторожны, устанавливая слишком низкое значение.TCP надежен, то есть каждая датаграмма получает подтверждение.Когда подтверждение не отправлено, другая датаграмма отправляется до 3 повторных попыток.
Что происходит с TCP, когда канал медленный, начинаются повторные попытки, которые отправляют дополнительные повторные дейтаграммы, которые затем еще больше замедляют канал, покамного попыток, чтобы никакие данные не проходили.
Также, когда принимающая сторона соединения работает медленно, подтверждения не могут быть немедленно отправлены обратно.Таким образом, вы должны разрешить время окончания приема выдать подтверждение.Обычно проверка выполняется автоматически сетевой картой, и это не должно вызывать проблем.
Кроме того, необходимо учитывать, существуют ли средства проверки на вирусы или брандмауэры, которые перехватывают сообщения.