Форум программистов, компьютерный форум CyberForum.ru

Проверка сокета - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Составить программу, в которой вычислить, где и - сумма и количество положительных элементов массива Х [N]; и - сумма и http://www.cyberforum.ru/cpp-beginners/thread1142542.html
Составить программу, в которой вычислить z=s1+s2/k1*k2 , где s1,k1 и - сумма и количество положительных элементов массива Х ; и s2, k2- сумма и количество положительных элементов массива Y . Вычисление суммы и количества положительных элементов массива, его инициализацию, вывод элементов массива оформить в виде функций.
C++ Удаление из файла Помогите с Удалением из файла. Например: Я записал 2 животных, как удалить 1 из животных из файла? Вот мой код. Помогите дописать удаление. Код: #include<iostream> #include<fstream> using namespace std; http://www.cyberforum.ru/cpp-beginners/thread1142535.html
C++ Поиск товара
Здравствуйте! Сделал поиск, но почему то не выводит найденное, когда водиш по какому параметру искать и что искать, программа тормозит и все, это не связано с процедурой подключенной для вывода вот код void search_product (Products*Ps) { clrscr(); if(!Ps) { cout<<"Cpicok pyct"<<endl; cout<<endl<<"Dla perehoda v menu najmite ENTER"<<endl; getchar(); return; }
C++ Поиск товара
Здравствуйте! Сделал процедур на поиск товара, поиск осуществляется по 2 параметрам, при выборе формата все ок, но потом когда водиш что искать и жмеш ентер, ничего дальше не происходит вот код void search_product (Products*Ps) { clrscr(); if(!Ps) { cout<<"Cpicok pyct"<<endl; cout<<endl<<"Dla perehoda v menu najmite ENTER"<<endl; getchar(); return; }
C++ Вычисление интеграла методом прямоугольников http://www.cyberforum.ru/cpp-beginners/thread1142515.html
Добрый день. Написал прогру считающую интеграл методом прямоугольников, но выдаёт какие-то странные значения. Подскажите что не так. Заранее спасибо. #include<stdio.h> #include<math.h> #include<conio.h> double f(double x){return(x);} int main() { int N,i; double a,b,S=0,h; printf("a="); scanf("%lf", &a);
C++ Убрать из файла все буквы 'а'. Символьный файл содержит различные буквы латинского алфавита. Убрать из этого файла все буквы 'а'. подробнее

Показать сообщение отдельно
DrOffset
6459 / 3833 / 885
Регистрация: 30.01.2014
Сообщений: 6,628
09.04.2014, 00:37     Проверка сокета
sergeu90, в общем все понятно, разобрался в чем дело.
Ты зря отдаешь по адресу сокет в поток, нужно копировать. Это на время получается разделяемый ресурс, который перезатирается на очередной итерации подключения и поток цепляется к уже существующему соединению. Я сделал вот так и все заработало.
C++
1
work = CreateThreadpoolWork(ServeClient, (void*)clientSocket,&CallBackEnviron);
Однако у тебя там еще проблемы, серьезные. У тебя есть две переменные, которые являются разделяемыми между потоками.
C++
1
2
int usersCount = 0; // количество активных пользователей
SOCKET usersList[MAX_CLIENTS]; // массив для списка сокетов подключенных клиентов
Доступ к ним нужно синхронизировать. Через мьютекс, например.

По хорошему это надо переделать через очередь событий и синхронизировать только ее. Тогда и сокет для работы можно через событие передать и данные другие. Поток начала работу, достал из очереди событие и начал его обрабатывать. В список клиентов добавлять в основном потоке, удалять тоже. Добавлять при старте обработки, удалять по завершению. Как-то так.
 
Текущее время: 16:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru