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

Как избавиться от остановки программы из-за функции recv()? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Онлайн-курсы,развод или хорошее обучение? http://www.cyberforum.ru/cpp-beginners/thread932331.html
Ребят,что скажите по поводу вот этих курсов?. Не развод ли? И научат ли чему стоящему?
C++ Как передать vector? struct point3D { // Точка X float X; // Точка Y float Y; // Точка Z float Z; }; struct ObjectStruct // Структура объекта http://www.cyberforum.ru/cpp-beginners/thread932307.html
C++ стрит-флеш
Написал функцию проверки на образование комбинации стрит-флеш....помидорами не закидывать писал не очень вдумчиво но здесь какие то ошибки при использовании алгоритмов STL и моей структуры(я так думаю) мб и сам алгоритм не правильный...кому не в западло разобраться в моем говнокоде подскажите)) ОШибка в 53 и в 102 строке struct card { int first; //величина карты int...
C++ Крестики-нолики
Добрый вечер. Хочу попробовать написать свои крестики-нолики. Игру еще не дописал, но уже появилась следующая проблема. По идее, если я ввожу координаты 1 4 или 2 4, то должно вывести сообщение о неправильном вводе, на деле же символ просто переносится на следующую строку. В чем проблема? #pragma warning(disable:4996); #include <iostream> #include <conio.h> using namespace std; char...
C++ Глобальные переменные http://www.cyberforum.ru/cpp-beginners/thread932271.html
Подскажите пожалуйста, почему данные в глобальной переменной перезаписываются, а не плюсуются? Пример: int peremennaya; void foo(); void main() { char ans;
C++ Не использовать имя класса при его реализации Из-за того, что не смог грамотно сформулировать свой вопрос, не нашел ничего в гугле :( Поэтому объясню на примере: Допустим, есть некий класс Example, объявление которого заключено в заголовочный файл Example.h: #ifndef EXAMPLE_H #define EXAMPLE_H class Example { Example(); подробнее

Показать сообщение отдельно
AntiAlianKiller
1 / 1 / 0
Регистрация: 08.05.2013
Сообщений: 14
02.08.2013, 01:59     Как избавиться от остановки программы из-за функции recv()?
Я пишу чат на WinSock. Суть его проста - существует цикл, в котором идет такая последовательность действий:
1. Если нажат Enter, то отправляем данные send()
2. Прием данных recv()
3. Анализирование и вывод принятых данных

Все работает правильно, данные анализируются и отправляются без ошибок... Но есть одна проблема:
Как только цикл доходит до функции приема данных recv(), то он останавливается: он не желает продолжать ход программы, пока не будут приняты хоть какие-то данные.
По моей задумке, даже если данные с помощью recv() приняты не будут, ход программы не будет остановлен (Иначе получается, что я не смогу отправить данные, пока их не прийму.)

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