Вы правы в использовании TCP.
Вы должны установить соединение и держать его открытым, пока не закончите.
Вы не можете победить это на скорости.
Если изменения не слишком велики, лучше всего отправлять только дельта-изменения, а не полные копии данных.
Способ, которым я делал это в прошлом, заключается в использовании Разное выполнение .
Это может быть больше, чем вы хотите попробовать, но основная идея заключается в том, что вы пишете функцию для обхода данных. Думайте об этом как об одновременном сериализаторе / десериализаторе.
Под этой структурой управления он автоматически обнаруживает все изменения с момента предыдущего обхода.
Вы можете получить эти изменения и отправить их получателю на другом конце, который работает таким же образом, но складывает изменения.
Это может быть слишком много для того, что вы делаете, но независимо от этого, TCP - это путь.
Кстати, старайтесь избегать new
-ing. Это дорого.