Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Проблема с Асинхронным вызовом AcceptCallback

1.8K
28 ноября 2008 года
NextTime
217 / / 19.12.2007
Посе того, как мой сетевой чат отработал мне необходимо закрыть поступление новых соединений и закрыть все существующие.
Но при попытке закрыть поступление новых соединений через _serversocket.Close()

3 заранее открытых потока из пула для асинхронного приема соединений начинают "якобы" принимать соединение.
Т.е. В начале программы создается 3 заранее открытых потока из пула для асинхронного приема соединений:
 
Код:
For i = 1 To 3
 _serversocket.BeginAccept(New AsyncCallback(AddressOf AcceptCallback), _serversocket)
Next

Они принимают соединения от клиентов
После _serversocket.Close() почему-то начинает работать процедура обратного вызова (AcceptCallback), хотя новых соединений нет. Соответсвенно вся программа рушится.
Как закрыть эти потоки из пула или как сделать так, чтобы они после _serversocket.Close() не мешались. Ну или как сделать защиту.

Ща пришла идея....

 
Код:
For i = 1 To 3
 _serversocket.BeginAccept(New AsyncCallback(AddressOf AcceptCallback), _serversocket)
Next

Запоминать каждый BeginAccept в массив, а потом как то закрыть их(отключить), но как?
Я еще завтра поламаю себе моСк, но прошу помочь:)
5
29 ноября 2008 года
hardcase
4.5K / / 09.08.2005
Используйте же наконец классы TcpListener, TcpClient и NetworkStream и заканчивайте с серверными сокетами. Это упростит вам жизнь и сохранит нервную систему. Как только сможете легко с этими классами работатать - сможете и с сокетами, уверяю.
1.8K
29 ноября 2008 года
NextTime
217 / / 19.12.2007
Цитата: hardcase
Используйте же наконец классы TcpListener, TcpClient и NetworkStream и заканчивайте с серверными сокетами. Это упростит вам жизнь и сохранит нервную систему. Как только сможете легко с этими классами работатать - сможете и с сокетами, уверяю.



Отличный ответ по томе))) А не понравились мне TcpListener, TcpClient)) незнаю почему.... все сильно уж выскоуровнево))средний уроерь - Net.Sockets.Socket, ну и низки - Winsock.dll на API... Мне понравился 2 случай. Пока мне хочется с сокетами, тем более я почти все на них построил...
P.S. может ответи-те по-теме?)))
P.S. 2 : Я не люблю лёгкие лёгкости, но и не люблю сложные сложности, поэтому всегда выбираю оптимальные средние средности (c)))

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог