Постоянный запуск сценария TCP-сервера, но с низкой загрузкой процессора

#vb.net #tcplistener

#vb.net #tcplistener

Вопрос:

Я использую программу в стиле создания сервера / клиента, и она использует tcp-соединения.

Теперь сервер работает так, как это, но он будет прослушивать только до тех пор, пока не получит свой единственный запрос. Моя проблема заключается в том, что он прослушивает только до тех пор, пока не получит одно сообщение, а затем закрывается. Однако более серьезной проблемой является задержка, она не позволит мне каким-либо образом взаимодействовать с формой, пока она не закроет соединение. Есть ли способ заставить его «пассивно» прослушивать, за неимением лучшего слова? Я не хочу, чтобы он занимал тонны процессора.

Спасибо за помощь!

Это в vb.net.

Ответ №1:

В Windows такие события, как нажатия клавиш, щелчки мыши и перемещения и т.д., Отправляются в виде событий (сообщений) в поток, предназначенный для их обработки. Если этому потоку требуется много времени для обработки сообщения (например, при ожидании поступления TCP-запроса), говорят, что поток «блокируется» до завершения этой задачи, по существу блокируя весь ваш пользовательский интерфейс.

Вы хотите настроить поток, отдельный от того, в котором выполняется ваша форма, для обработки прослушивания TCP. Этот учебник по потоковой передаче в Vb.Net должно направить вас по правильному пути.

Ответ №2:

Взгляните на класс TcpListener, также проверьте приведенный код для метода Pending.

Вам действительно лучше использовать потоки для обработки всего этого, поскольку вы хотите, чтобы ваш поток пользовательского интерфейса оставался доступным, чтобы ваш пользовательский интерфейс оставался отзывчивым.