|
11 / 15 / 8
Регистрация: 12.10.2011
Сообщений: 811
|
||||||||||||||||
Winsock2 в классе12.01.2016, 08:32. Показов 2386. Ответов 26
Метки нет (Все метки)
Решил сделать класс для дальнейшего применения в разных программах вот что получилось:
Файл Konnekt.срр
Ошибка C2276 &: недопустимая операция с выражением привязанной функции-члена Consoleserver_1.0 C:\Users\Administrator\Desktop\Проекты\C onsoleserver_1.0\Consoleserver_1.0\Konne kt.cpp 76 Вроде поток оргонизовываю правельно... в чем проблема?
0
|
||||||||||||||||
| 12.01.2016, 08:32 | |
|
Ответы с готовыми решениями:
26
winsock2.h winsock2 Уроки по WinSock2 C++ |
|
654 / 575 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
|
|
| 12.01.2016, 11:26 | |
|
1
|
|
|
11 / 15 / 8
Регистрация: 12.10.2011
Сообщений: 811
|
|
| 12.01.2016, 13:16 [ТС] | |
|
Спасибо! а то я голову чу
ть не сломал....Добавлено через 1 час 14 минут Ну а как в общем я в правильном направлении иду? или намудрил лишнего. Хочу такой класс который можно будет легко подключать к проектам и который будет осуществлять многомопочный коннект, принимать и предоставленные ему данные.
0
|
|
|
60 / 60 / 19
Регистрация: 11.07.2013
Сообщений: 305
|
|
| 12.01.2016, 14:40 | |
|
Все данные в классе лучше всего закрыть в private. Тем более, когда приложение многопоточно.
Нужно обеспечить асинхронный доступ к данным, почитай про mutex Крайне не рекомендуется использовать goto У тебя работа идет лишь с последним сокетом. За время создания потока может появиться еще одно подключение, и тогда два потока будут работать с одним сокетом, а при синхронной работе это вообще не хорошо.
0
|
|
|
11 / 15 / 8
Регистрация: 12.10.2011
Сообщений: 811
|
||||||
| 12.01.2016, 15:01 [ТС] | ||||||
0
|
||||||
|
654 / 575 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
|
|||
| 13.01.2016, 11:25 | |||
|
Добавлено через 1 минуту
0
|
|||
|
11 / 15 / 8
Регистрация: 12.10.2011
Сообщений: 811
|
|||||||
| 13.01.2016, 12:00 [ТС] | |||||||
|
Если сделаем std::thread::join() то вроде тогда будем ждать завершение потока в этом случае многопоточность не получится. а отсоединяю как раз для того чтобы этот поток продолжил работу и перешел к ожиданию подключения второго клиента....
0
|
|||||||
|
60 / 60 / 19
Регистрация: 11.07.2013
Сообщений: 305
|
|
| 13.01.2016, 12:30 | |
|
Во время создания потока ClientSocket в классе может изменится (новое подкл.), тогда два потока будут обрабатывать один сокет. Такого допускать нельзя, потокам нужно обеспечить асинхронный доступ к необходимому блоку памяти, в этом вам поможет mutex. Вообще почитайте про многопоточность. Я конечно далеко не спец, но мне кажется потоки в одном классе лучше не использовать... А если и использовать, то сделать их независимыми от переменных внутри класса (напр. ClientSocket)
0
|
|
|
11 / 15 / 8
Регистрация: 12.10.2011
Сообщений: 811
|
||
| 13.01.2016, 12:35 [ТС] | ||
|
Да я тоже уже подумал, что если создается 2 потока то прием ведется в одну переменную а это не правильно... нужно объявлять буфер приема отправки уже в потоке...
Добавлено через 1 минуту
0
|
||
|
654 / 575 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
|
|||
| 13.01.2016, 12:42 | |||
|
Добавлено через 1 минуту
0
|
|||
|
11 / 15 / 8
Регистрация: 12.10.2011
Сообщений: 811
|
|
| 13.01.2016, 12:42 [ТС] | |
|
0
|
|
|
654 / 575 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
|
||
| 13.01.2016, 12:46 | ||
|
вообще варинтов много
1) пул потоков(читать на просторах интернета, объяснять долго но в 2х словах: есть фиксированное кол-во потоков по кол-ву ядер например и им раздаются задания) 2) каждое подключение - новый поток(тут проблема много подключившихся, много потоков а это ограниченный ресурс) 3) асинхронный ввод\вывод и все делать в 1ом потоке(порядка 100 клиентов без проблем отработают) Добавлено через 2 минуты
0
|
||
|
11 / 15 / 8
Регистрация: 12.10.2011
Сообщений: 811
|
|
| 13.01.2016, 13:04 [ТС] | |
|
А еще сделать новый класс где будет описан этот поток? и в новый поток отдавать уже этот класс? или это уже слишком ?
0
|
|
|
654 / 575 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
|
||
| 13.01.2016, 13:32 | ||
|
Добавлено через 2 минуты Вы бы все же сказали поконкретнее какие функциональные требования, а то все "вилами на воде"
0
|
||
|
11 / 15 / 8
Регистрация: 12.10.2011
Сообщений: 811
|
|
| 13.01.2016, 14:02 [ТС] | |
|
Требования, класс который можно будет подключать к проектам и который будет осуществлять многопоточный прием и отправку сообщений клиентам. Для создания многопоточного сервера например...
0
|
|
|
654 / 575 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
|
|
| 13.01.2016, 14:58 | |
|
но существуют же готовые решения, например PoCo или Вы желаете сами написать
0
|
|
|
11 / 15 / 8
Регистрация: 12.10.2011
Сообщений: 811
|
|
| 13.01.2016, 17:26 [ТС] | |
|
Интересно самому.. тренировка опять же и появляется понимание
0
|
|
|
50 / 49 / 10
Регистрация: 24.01.2010
Сообщений: 225
|
||||||
| 14.01.2016, 00:41 | ||||||
|
про код промолчу. резко отрицательно. лучше начните с коцепции. вот это
в TCP НЕТ ПАКЕТОВ на пользовательском уровне (круглый) ЗЫ Типичная ошибка большинства...
0
|
||||||
|
11 / 15 / 8
Регистрация: 12.10.2011
Сообщений: 811
|
|
| 14.01.2016, 06:31 [ТС] | |
|
Вы обратили только на название? это я образно назвал только потому, что клиент (блок телематики) шлет как бы пакеты информации это только для себя...
![]() Ну а что на счет самого кода всегда рад выслушать замечания... на счет goto я тоже в курсях это сделал на время только для проб и отладки... хотя а почему бы и нет именно здесь? и оно ни разу не срабатывало ![]() Ну вот в принципе я добился чего хотел, может подключится одновременно несколько клиентов и сервер пока отправляет в ответ то что пришло от клиента... Вопрос вот в чем: например у нас подключилось 5 клиентов, открылось 5 потоков а как мне выбрать именно тот поток для отправки данных например 3 клиенту? т.е. задача отправлять данные в любое время необходимому мне клиенту....
0
|
|
|
50 / 49 / 10
Регистрация: 24.01.2010
Сообщений: 225
|
|
| 14.01.2016, 08:33 | |
|
"в корне не верно" это от слова совсем.
это как если-бы вам говорили, что машина хэчтбак, а Вы бы угаваривали поднять маленькую плиту весом не 2 тонны а всего 1,5 тонны ![]() протокол TCP потоковый. нет там в природа пакетов. посылайте хоть по 10, 20 или по 1500 - ну нет там пакетов физически...Пример: вам пошлют 50+50+50+50+50 Вы можете принять 50+10+30+150+10 т.е. квантованости НИКТО не обещал! (круглый)
0
|
|
| 14.01.2016, 08:33 | |
|
Помогаю со студенческими работами здесь
20
winsock2 и dns Книги по winsock2
Скачать изображение winsock2 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2.
Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники".
В. . .
|
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии.
. . .
|
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
|
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут.
https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc
Первый документ красиво выглядит, но без схемы.
Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
|
|
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере".
Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
|
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти".
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
В качестве источника данных. . .
|
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер
Написал заготовку:
dotnet new console --aot -o UrlHandler
var items = args. Split(":");
var tag = items;
var id = items;
var executable = args;. . .
|
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3.
Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
|