|
32 / 30 / 4
Регистрация: 01.02.2014
Сообщений: 878
|
||||||
Как правильно работать в wisocket?14.10.2017, 10:41. Показов 2305. Ответов 20
Метки нет (Все метки)
Конкретно пару вопросов,
в мунале есть слова о том что для каждого успешного вызова WSAStartup нужно вызвать WSACleanup, я обычно вызываю WSAStartup в конструкторе программы, а WSACleanup в деструкторе, но раз есть возможность вызывать их несколько раз значит наверно есть в этом смысл? Например я использую сокеты в потоках, может мне в каждом потоке надо их вызывать а не для всего приложения сразу? вдруг например он там в стек ошибки записывает и таким образом память растет.. Добавлено через 3 минуты и еще вопрос есть код
0
|
||||||
| 14.10.2017, 10:41 | |
|
Ответы с готовыми решениями:
20
Как правильно работать с БД
|
|
Ушел с форума
|
|||
| 14.10.2017, 10:52 | |||
|
которые "не знают" друг про друга ничего. В таких системах WSAStartup/WSACleanup могут вызываться много-много раз, даже из одного потока...
1
|
|||
|
32 / 30 / 4
Регистрация: 01.02.2014
Сообщений: 878
|
||||||||||||
| 14.10.2017, 11:27 [ТС] | ||||||||||||
правильно ли вообще так делать?
ну и по поводу ошибок, они где-то хранятся в стеке? или сохраняется только последняя которую вызывает WSAGetLastError( ) ?
0
|
||||||||||||
|
Ушел с форума
|
||||
| 15.10.2017, 08:19 | ||||
|
это делает WinSock в нужный момент - когда ты в следующий раз вызываешь gethostbyname и, очевидно, когда вызывается самый последний WSACleanup. Ну то есть, использовать здесь freeaddrinfo/free/etc здесь было бы грубой ошибкой. Как пишет MSDN, указатель на выделенную память хранится в блоке памяти потока (TLS - Thread Local Storage). иначе произойдет разыменование нулевого указателя. Если быть точным, коды GetLastError и WSAGetLastError, - а это одно и то же, - хранятся в TEB (Thread Information Block) - специальной структуре, которая есть у каждого потока Win32.
1
|
||||
|
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
|
|||||||
| 13.11.2019, 19:41 | |||||||
|
Подскажите пожалуйста, а зачем много раз вызывать WSAStartup и WSACleanup, ведь WSACleanup - это просто ициниализация самого Winsock. ? И если не сложно подскажите пожалуйста:
Это некое соглашение о вызовах, но что будет катострафического, если запустить без него ? По факту работает, но, что потенциально может случится ?
0
|
|||||||
|
Неэпический
|
|||||
| 13.11.2019, 20:27 | |||||
__stdcall - не является частью C или C++.Это стороннее ключевое слово. На одном компиляторе соглашение вызова пишется как __stdcall, на другом, например, как __attribute__((stdcall)).Используя макрос, мы даем разработчикам возможность прописывать соглашение вызова универсально. #define WSAAPI stdcall - на одном#define WSAAPI __stdcall - на другом#define WSAAPI __attribute__((stdcall)) - на третьемЕсли используется WSAAPI, то пользовательский код не меняется от компилятора к компилятору. WinAPI использует stdcall. Например, оконная процедура может быть и cdecl и stdcall. Так-то она должна быть stdcall, но для дураков сделали защиту.
0
|
|||||
|
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
|
||
| 13.11.2019, 20:44 | ||
|
Но код скомилировался, припроверке аозвращенного значения socket != invalid_socket все нормально.
0
|
||
|
Неэпический
|
|
| 13.11.2019, 20:51 | |
|
Optimus11, socket объявлена в потрохах компилятора.
В объявлении указано, что она использует __stdcall.При вызове компилятор строит код под это соглашение. Если просто поменять объявление, то получим undefined reference, т.к. соглашение влияет на декорирование имен. Добавлено через 3 минуты https://en.wikibooks.org/wiki/... onventions
1
|
|
|
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
|
|||||||||||
| 13.11.2019, 21:15 | |||||||||||
А вот тут не очень:
0
|
|||||||||||
|
Неэпический
|
||||||||
| 13.11.2019, 21:33 | ||||||||
Если пишите на ассемблере, то руками. На C и C++ код очистки построит компилятор.
1
|
||||||||
|
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
|
||||||
| 17.11.2019, 16:14 | ||||||
|
Здравствувйте,
Подскажите пожалуйста: Вот когда создаем сокет:
И вот вопрос: делая запрос к какому либо сайту, я ведь не знаю, какой он из протоколов сейчас поддерживает старый или новый, и если поставить ipv4(AF_INET), то к серверу работающему на ipv6 - подключение не произойдет ведь ? То есть просто нужно сразу выбирать ipv6(AF_INET6) и просто указывать адрес ipv4 с 128 битном формате ipv6 ?
0
|
||||||
|
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
|
||||||||||||||||
| 19.11.2019, 19:35 | ||||||||||||||||
|
Здравствуйте,
Просто интересно: при создании сокета, уже указывается семейство протоколов (параметр af):
0
|
||||||||||||||||
|
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
|
||
| 20.11.2019, 18:42 | ||
0
|
||
|
Неэпический
|
||
| 20.11.2019, 19:12 | ||
|
Optimus11, может Вы уже свою тему создадите?
socket нужно пихать PF_INET, а не AF_INET, т.к. они несколько разные вещи обозначают. Но эти константы всегда были равны, и PF_INET уже не используется. Но это не точно.
0
|
||
|
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
|
|||||||
| 20.11.2019, 19:22 | |||||||
0
|
|||||||
|
Неэпический
|
||||
| 20.11.2019, 20:08 | ||||
![]() http://man7.org/linux/man-pages/man2/socket.2.html
0
|
||||
|
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
|
|
| 20.11.2019, 20:33 | |
|
Все равно не понимаю
((Смысл использовать pf_inet при создании сокета, af_inet при коннекте ? Какой в этом сакральный смысл, если при конекте я все равно не знаю на какой семействе протоколов обслуживается запрашиваемый сайт.
0
|
|
|
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
|
||||||
| 26.11.2019, 14:24 | ||||||
|
Здравствуйте,
Ни как не могу на сайте microsoft в темах по winsock описание структуры:
Ну если с sin6_family и sin6_ port понятно, то что такое sin6_flowinfo и sin6_scope_id и как оно и чем заполняется - непонятно.
0
|
||||||
|
Неэпический
|
|
| 26.11.2019, 16:01 | |
|
sin6_flowinfo - The IPv6 flow information.
P.S. Ты так и будешь в чужих старых темах свои вопросы задавать?
0
|
|
| 26.11.2019, 16:01 | |
|
Помогаю со студенческими работами здесь
20
Как правильно работать с сетками? Как правильно работать с кириллицей Как правильно работать с циклом Как правильно работать с Fragment Как правильно работать с json? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|