|
0 / 0 / 0
Регистрация: 05.11.2012
Сообщений: 4
|
||||||
Winsock, _beginthreadex()05.11.2012, 10:14. Показов 2484. Ответов 18
Метки нет (Все метки)
Доброго времени суток дамы и господа, могли вы помочь мне разобраться где я туплю, хочу написать класс-обертку над сокетами, с++ для меня достаточно новый язык и работа с WinSock2.h очень проблематична для меня(
0
|
||||||
| 05.11.2012, 10:14 | |
|
Ответы с готовыми решениями:
18
C++ WinSock WinSock WinSock на C++ |
|
Модератор
3409 / 2180 / 354
Регистрация: 13.01.2012
Сообщений: 8,461
|
|
| 05.11.2012, 13:26 | |
|
а что, не должен? может он ошибку возвращает - вы ведь результат не проверяете
1
|
|
|
0 / 0 / 0
Регистрация: 05.11.2012
Сообщений: 4
|
|||||||||||||||||
| 05.11.2012, 13:58 [ТС] | |||||||||||||||||
|
Судя по всему не должен... По сути accept в данном коде должен тормознуть основной поток для получения запроса на подключение от клиентского сокета (connect(/*аргументы*/)) и когда этот запрос будет получен при успешном выполнении
У меня почему-то
Добавлено через 17 минут Проблема решилась очень просто, я передавал указатель на не инициализированную переменную указывающую на размер структуры client_addr, в следствии чего accept исполнялся с ошибкой и возвращая true. Решение инициализация переменной int client_addr_size:
0
|
|||||||||||||||||
|
Модератор
3409 / 2180 / 354
Регистрация: 13.01.2012
Сообщений: 8,461
|
|
| 05.11.2012, 16:02 | |
|
почему бы и нет. главное что бы этот вектор был защищен критической секцией или иным методом. а вообще читал, что выделение для каждого клиента своего потока - спорная идея ибо тащит за собой большие затраты на переключение потоков при большом количестве клиентов. кто-то излагал информацию, что производительные серверы однопоточные (не выяснял, но чую что наверное так и есть). у меня это превратилось вот в такое (см. вложение).
1
|
|
|
Модератор
3409 / 2180 / 354
Регистрация: 13.01.2012
Сообщений: 8,461
|
|
| 05.11.2012, 16:18 | |
|
...а в итоге вот в такой web-сервер...
0
|
|
|
Модератор
3409 / 2180 / 354
Регистрация: 13.01.2012
Сообщений: 8,461
|
||
| 08.11.2012, 09:48 | ||
|
0
|
||
|
Модератор
3409 / 2180 / 354
Регистрация: 13.01.2012
Сообщений: 8,461
|
|||
| 09.11.2012, 10:00 | |||
|
0
|
|||
|
|
|
| 09.11.2012, 18:42 | |
|
Ниче не понял, о чем вы?
При одном потоке серв просто подвиснит в ожидании клиента, ответа от которого может быть длительное время - а это тупо простой по тому как в это время ничего не обрабатывается, ведь сокет то блокирующий. Если вы говорите Unix то там не потоки, а процессы - вообщем ветвления... но это принцип тот же ( за исключкнием того что немного растратно "порождать" зато безопастно в плане разделенных данных)
0
|
|
|
Модератор
3409 / 2180 / 354
Регистрация: 13.01.2012
Сообщений: 8,461
|
||
| 09.11.2012, 22:53 | ||
|
0
|
||
|
Модератор
3409 / 2180 / 354
Регистрация: 13.01.2012
Сообщений: 8,461
|
||
| 10.11.2012, 22:48 | ||
|
1 для блокирующих надо проверять перед вызовами наличие входящего соединения и висения не будет 2 работаем с неблокирующими
0
|
||
|
|
|
| 13.11.2012, 01:36 | |
|
Ну допустим сервер почты POP3 (к примеру ), допустим пользователь ввел команду - USER и ввел свой логин, а вот пароль, он подзабыл и тупит-вспоминает его - как бы соединение есть, а обработки нет, так нет следующей команды.
Чем тут поможет select ?
0
|
|
|
Модератор
3409 / 2180 / 354
Регистрация: 13.01.2012
Сообщений: 8,461
|
|
| 13.11.2012, 09:10 | |
|
на сервер почты пересылаются строки с теми или иными командами. пользователь ввел логин - логин отправился, сервер увидел наличие входящих данных, сервер разобрал логин. пользователь думает о пароле - пусть думает, данные не отправляются, сервер не видит наличия входящих данных, сервер крутит цикл без какой-либо остановки. при этом клиенты подключенные через другие сокеты могут спокойно обмениваться с сервером данными.
0
|
|
|
0 / 0 / 0
Регистрация: 05.11.2012
Сообщений: 4
|
|
| 17.11.2012, 13:08 [ТС] | |
|
Вопщем использование vector не очень рационально, там свои затраты проц времени на различные итеративные функции + резервирование памяти + освобождение = проще использовать массив указателей ака быстрей он будет выглядеть да + ко в всему 65535+ подключений просто не возможно ибо Backlog ограничивает, можно конечно реализовать эту вещь по кластерному типу, оставлять одно место свободным для направления подключающегося клиента на "соседний" серверный сокет, но я пока только начал учить плюсы
Поэтому Мало что смогу ![]() vxd->Спасибо за сорцы!
0
|
|
|
|
||
| 17.11.2012, 19:18 | ||
|
А освобождение памяти не понял как относится к сему. Основные затраты тут на перераспределение памяти при "быстром расширении" размера Учитывая что размер структуры данных мал, то затраты будут малы, по крайней мере оправданы. На крайний случай можно хранить не структуры, а указатели на нее.
0
|
||
|
1259 / 650 / 44
Регистрация: 06.02.2011
Сообщений: 1,654
|
|
| 17.11.2012, 22:04 | |
|
0
|
|
|
4 / 4 / 0
Регистрация: 23.09.2012
Сообщений: 83
|
|
| 13.12.2012, 18:47 | |
|
Разделяемая память нужна по-моему только для меж процессорного общения, а именно цельный кусок памяти нужного объема, что тоже проблематично, хотя это может только в real time
0
|
|
| 13.12.2012, 18:47 | |
|
Помогаю со студенческими работами здесь
19
c++ winSock
WinSock WinSock winsock Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
|
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс.
Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
|
Программный отбор значений справочника
Maks 21.03.2026
Установка программного отбора значений справочника "Сотрудники" из модуля формы документа.
В качестве фильтра для отбора служит предопределенное значение перечислений.
Процедура. . .
|
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
|
|
Оттенки серого
Argus19 18.03.2026
Оттенки серого
Нашёл в интернете 3 прекрасных модуля:
Модуль класса открытия диалога открытия/ сохранения файла на Win32 API;
Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
|
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-rectangles-sdl3-c. zip
finish-rectangles-sdl3-cpp. zip
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|