проблемы с вызовом метода приема сокета сервера с бесконечным временем ожидания - PullRequest
2 голосов
/ 07 марта 2012

Я создал серверный сокет на моей стороне.Я не знаю, когда клиент подключится ко мне.

Вызов serverSocket.accept () в моем приложении без установки таймаута сокета решит мою проблему принятия клиента в любой момент времени.Я делаю это в отдельном потоке, так что это не будет блокировать другую часть моего приложения.

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

Есть ли другой способ принять соединение на стороне клиента.У меня нет никакой информации о том, когда клиент вызывает соединение через сокет, за исключением того, что он вызывает в какой-то момент.

1 Ответ

1 голос
/ 07 марта 2012

Нет проблем с вызовом accept в другом потоке. Поток будет заблокирован при вызове accept и не будет планироваться операционной системой, пока не будет установлено входящее соединение. Практически, если вы не получаете соединение всю неделю, ваш поток не будет работать на процессоре в течение этого времени.

Таким образом, он не будет потреблять ресурсы процессора и только немного памяти.

...