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

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

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

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

Это в vb.net.


person Cyclone    schedule 13.09.2009    source источник


Ответы (2)


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

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

person Eric J.    schedule 13.09.2009

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

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

person Timothy Walters    schedule 13.09.2009