powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Что делать с серверным сокетом после таймаута BeginAccept?
2 сообщений из 2, страница 1 из 1
Что делать с серверным сокетом после таймаута BeginAccept?
    #38989959
WinterGraveyard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ситуация: приложение внутри себя поднимает сокет-сервер, и асинхронно ожидает клиентских подключений. Ожидает определенное время, и если подключений не случилось (или случились, но после этого определенного времени), то делает что-то дальше, не обращая внимание на подключения, случившиеся после окончания таймаута.
Вроде бы напрашивается вот такой код (схематично):
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
void ActivateServer()
{
  var ipEndPoint = new IPEndPoint(IPAddress.Parse(Properties.Settings.Default.IPAddress), Properties.Settings.Default.IPPort);
  using (var listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp))
  {
    listener.Bind(ipEndPoint);
    listener.Listen(10);
    var asyncResult = listener.BeginAccept(OnClientAccept, listener);
    if (!asyncResult.AsyncWaitHandle.WaitOne(TimeSpan.FromSeconds(5))) return;
    // работаем с подключениями
  }
}

void OnClientAccept(IAsyncResult result)
{
  // обрабатываем подключившегося клиента
  .....
}


но меня интересует, что будет после диспоза сокета, который случился ввиду выхода из метода по таймауту? вроде как ссылка на сокет будет жить (ввиду сохранения в сокете ссылки на метод делегата), и если такой сокет поймает случившееся клиентское подключение - что будет? Как корректно обработать такую ситуацию?
...
Рейтинг: 0 / 0
Что делать с серверным сокетом после таймаута BeginAccept?
    #38990087
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WinterGraveyardи если такой сокет поймает случившееся клиентское подключение - что будет?
диспоузед сокет никак не сможет принять подключение
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Что делать с серверным сокетом после таймаута BeginAccept?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]