2013-04-04 3 views
0

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

Есть ли способ проверить это асинхронно?

На мой взгляд, я мог бы создать поток, в котором я прокручивал все клиенты и проверял, будет ли Client.Connected, тогда я закрою сокет, но, возможно, есть другой способ сделать это.

+0

Что сокета вы используете? Каковы потребности вашего проекта? - Другой класс может лучше соответствовать вашим потребностям, например. TCPListener и т. Д. И что вы пробовали до сих пор? – Clint

+0

TCP-сокет, мне нужно знать, когда клиент был отключен. Что я пробовал до сих пор? Ничего, я только что написал свою идею в этом вопросе, и я не думаю, что это было бы неплохо, так как может быть сказано 1.000 клиентов ... и цикл через 1000 клиентов может занять некоторое время. . – Leo

+0

@ Включение через 1000 клиентов действительно потребует времени, но в идеале вы должны иметь дело с каждым из этих клиентов асинхронно, вы можете просто проверить, чтобы они все еще были доступны, когда вы пытаетесь взаимодействовать с ними. – Clint

ответ

0

Следующий вопрос может предоставить вам некоторые рекомендации о том, как лучше подойти к вашей проблеме и как лечить сокеты с несколькими клиентами в целом

объекта

Asynchronous server socket multiple clients

+0

Я использую begin read, accept write и т. д., но если я не взаимодействую с клиентом, и он отключен, сокет все еще находится в моем списке, и я этого не хочу. – Leo

+0

@ Leo, тогда это может быть полезно http://stackoverflow.com/questions/722240/instantly-detect-client-disconnection-from-server-socket, казалось бы, нет способа получить уведомление, но вам придется придумать с политикой опроса. – Clint

+0

Я сделал один поток, где я перебираю все сокеты и проверяю с помощью функции пула, если сокет подключен или нет. – Leo

Смежные вопросы