169 похожих чатов

Как кстати можно остановить подключение к сокету в корутине? Запустил

параллельно 20 корутин с withTimeoutOrNull(1000L), но два последних сервера недоступны и корутина почему-то ждет пока от них таймаут не прилетит, но должна была завершить эту дочернюю корутину. Как вручную отменить подключение к сокету?

12 ответов

20 просмотров

Вы наверное на Kotlin пишете? Я не пишу на нем, но думаю, потому что под капотом системный вызов ) И он блочит корутину ) Я бы делал в отдельном потоке ) Может что ребята подскажут.

Денис-Миронов Автор вопроса
DarkPerl
Вы наверное на Kotlin пишете? Я не пишу на нем, но...

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

Денис Миронов
Кстати у меня нет connect. Сокет сразу подключаетс...

Не знаю, использовать какой нибудь AsynchronousSocketChannel )))

Денис-Миронов Автор вопроса
DarkPerl
Не знаю, использовать какой нибудь AsynchronousSoc...

Сделал вручную так как в конструкторе он сам коннектится с таймаутов в 3 минуты. Делается так val socket2 = Socket() socket2.connect(InetSocketAddress(hostAddress, port), 1000) socket2.close()

Денис-Миронов Автор вопроса
DarkPerl
Не знаю, использовать какой нибудь AsynchronousSoc...

У меня есть еще идея как трекать качество проверки: как видно из моего плана часть серверов, соединение с которыми пересечет заданный таймаут, будут просто отброшены. Значит я могу знать начальное количество до проверки и количество тех, которые проверку прошли. Я могу понять какой процент прошел и если он подозрительно мал - запустить проверку снова через какое-то время.

Денис-Миронов Автор вопроса
DarkPerl
И таких ребят тысячи ) Бедные сервера :D

Разве сервера могу пострадать если установить с ними соединение и то неудачно на долю секунды?

Денис Миронов
Разве сервера могу пострадать если установить с ни...

Конечно, вы же занимаете соединение - ресурс системы ) И не вы один стучитесь в данную минуту )

Денис-Миронов Автор вопроса
DarkPerl
Конечно, вы же занимаете соединение - ресурс систе...

Ну предположим это будет 5-10 тысяч человек. Если они раз в неделю попробую открыть сокет, разве это большая нагрузка?

Денис Миронов
У меня есть еще идея как трекать качество проверки...

И останется у вас массив адресов. Дальше то что ?)

Денис-Миронов Автор вопроса
DarkPerl
И останется у вас массив адресов. Дальше то что ?)

Дальше я могу выбрать самый лучший сервер для региона

Денис Миронов
Дальше я могу выбрать самый лучший сервер для реги...

Сомневаюсь я ) Ну, ладно, расскажете потом, что у вас получилось )))

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта