|
22 / 19 / 9
Регистрация: 22.09.2015
Сообщений: 161
|
|||||||||||
Как правильно проверить на запрос подключения к серверу (select)03.09.2016, 19:11. Показов 2794. Ответов 5
Метки нет (Все метки)
Здравствуйте, в этой теме подсмотрел, как обойти блокировку команды accept: Функция accept
Но у меня это не работает, как только вызывается select он сразу же возвращает -1. ну я подумал, так как я не запустил клиент. Запуская клиент, подключения не происходит. Что я делаю не так?(В качестве клиента использую браузер Firefox, если я не указываю таймаут, то на функции select сервер висит(Это ожидаемо) и все прекрасно подключается) Кусочек где происходит обработка подключения
Весь код сервера
Добавлено через 4 минуты при обработке ошибки WSAGetLastError(); возвращает WSAEINVAL
0
|
|||||||||||
| 03.09.2016, 19:11 | |
|
Ответы с готовыми решениями:
5
Как правильно сделать запрос к серверу Как правильно составить запрос “К серверу”? Как правильно написать SELECT запрос? |
|
1263 / 977 / 384
Регистрация: 02.09.2012
Сообщений: 3,021
|
|
| 04.09.2016, 02:25 | |
|
похоже что sockets пустой при первом вхождении в цикл, получается у вас все три fd_set пустые, а это EINVAL.
0
|
|
|
22 / 19 / 9
Регистрация: 22.09.2015
Сообщений: 161
|
|||||||
| 04.09.2016, 12:35 [ТС] | |||||||
|
grgdvo, Если я уберу таймаут (NULL) то все работает. Или если я поставлю таймаут на 10 секунд и успею запустить клиент, то тоже все работает, по прошествии указанного времени, сервер опять не принимает соединение. В интернете нашел, что это "возможно" баг winsock (из-за не лицензионной ОС)) и фикс к нему. Вот тут Но это меня не устраивает. Обхожу эту проблему с помощью std::thread.
int isConnect = select(0, &mainSocket, 0, 0, &contime);mainSocket не может быть пустой, или я не прав? Может быть такое, что из-за того что sockets пустой при проверке множества mainSocket тоже вылезает ошибка (Да не, бред какой-то )Проверку я на подключенных пользователей поставил и ни чего не изменилось.
0
|
|||||||
|
183 / 181 / 66
Регистрация: 15.02.2015
Сообщений: 515
|
||||||
| 05.09.2016, 15:15 | ||||||
Сообщение было отмечено NRX как решение
Решение
Зачем делать два FD_SET в контексте одного потока?
В двух словах. Заводим контейнер для клиентских подключений, кидаем в fd_set сокет-аксептор и вызываем select. select вернул управление, если больше нуля, то проверяем FD_ISSET для аксептора, в случае успеха делаем accept и полученный сокет добавляем в контейнер, после проверяем, остались ли ещё необработанные сокеты (результат select - это кол-во сокетов готовых к работе, и при каждом удачном FD_ISSET уменьшаем его), если да, то пробегаем по контейнеру клиентов проверяя каждый FD_ISSET. Добавлено через 1 час 5 минут грубый примерчик
1
|
||||||
|
22 / 19 / 9
Регистрация: 22.09.2015
Сообщений: 161
|
|
| 05.09.2016, 19:47 [ТС] | |
|
Operok, спасибо за код, только есть ошибка, к сожалению нету времени разбираться. Сервер уходит в бесконечный цикл на 80 строчке когда подключается второй клиент. Появится время обязательно посижу подумаю, как исправить.
1
|
|
|
183 / 181 / 66
Регистрация: 15.02.2015
Сообщений: 515
|
||||||
| 05.09.2016, 21:13 | ||||||
1
|
||||||
| 05.09.2016, 21:13 | |
|
Помогаю со студенческими работами здесь
6
Как правильно составить запрос select Как правильно выполнить запрос Insert.Into.Select.From.Where Ошибка подключения к серверу: Конечный компьютер отверг запрос на подключение
Не правильно работает sql select запрос Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога
Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip"
Извлеките архив и вы увидите. . .
|
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога
Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д.
Сборка примера
Скачайте. . .
|
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net
REST сервисы временно не работают, только через Web.
Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
|
|
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
|
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
|
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма).
На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
|
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ *
Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи
и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
|