Форум программистов, компьютерный форум, киберфорум
C++: Сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/9: Рейтинг темы: голосов - 9, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 23.12.2014
Сообщений: 11

Клиент сервер Winsock + SDL. Форма клиента зависает

20.09.2016, 18:36. Показов 1771. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Проблема клиета: Форма SDL зацикливаеться циклом while и создается менюшка с кнопками и текстом тут все хорошо.Winsock тоже зацикливается чтобы recv циклом while автоматом принимал сообщения тут тоже все хорошо.
Кагбе SDL надо зациклится while чтобы работала форма и кнопки и Winsock должен зациклится для автоприема сообщений. Нужно SDL и winsock поместить под 1 while! И тут начинается проблема под одним while они не хотят работать, зависает winsock функция recv! Часть зависающего кода ниже.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
        if(Init() == false)         //тут инициализируеться SDL и Winsock о отправляет первый пустой пакет на сервер
    {                              //сервер отвечает пакет принят клиент подключен тут все ок.
    mainupdate=true;         
        return -1;                  
        }
    while(running)             //цикл вайл отвечает за SDL форму и обработку клавы
    {
        if(mainupdate)    
        {
            SDL_BlitSurface(back, NULL, screen, &O);
            MenuButton();                                         //создание кнопоки в SDL окне чтобы можна было нажымать 
            SDL_Flip( screen );                                   //мышкой
            mainupdate=false;
        }
                if((recv!=0)                                                    //вот тут прога зависает на recv(sConnect, recvbuf, 128, 0);
                {                                                                  //работать под одним вайлом SDL и Winsock не хочет
                recv(sConnect, recvbuf, 128, 0);
                }
        SDL_WaitEvent(&Event);                                   //обработка клавы кнопок
                MenuEvent(&Event);
        KeyEvent(&Event);
    }
    Clear();
    return 0;
Хоть намекните как можно сделать winsock и SDL под одним вайлом!По отдельности работаю а вместе не хотят!
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.09.2016, 18:36
Ответы с готовыми решениями:

TCP-эхо клиент-сервер (WinSock)
Здравствуйте! Подскажите, пожалуйста, почему TCP-эхо клиент-сервер неправильно работает? Сервер отправляет клиенту правильно только первую...

Клиент-сервер, прием сообщений и форма
Доброго времени суток. Есть программа-сервер с компонентом TServerSocket и клиент - TClientSocket. С сервера отправляю 5 строк: ...

Почему если клиент-сервер c 127.0.0.1 запускаю на WINDOWS через MS Visual, то после запуска клиента всё пропадает
а если тот же код запускаю в LINUX, то всё проходит нормально

3
 Аватар для Punya
8 / 8 / 6
Регистрация: 05.10.2015
Сообщений: 20
22.09.2016, 00:13
Лучший ответ Сообщение было отмечено sikilior как решение

Решение

Можно раскидать эти циклы по разным потокам и будет счастье.
1
0 / 0 / 0
Регистрация: 23.12.2014
Сообщений: 11
22.09.2016, 09:44  [ТС]
пасиб хоть знаю в какую сторону гуглить. думаю это хорошее решение
0
153 / 148 / 66
Регистрация: 20.02.2014
Сообщений: 556
29.09.2016, 02:05
sikilior, WSAAsyncSelect(), а в SDL использовать для эвентов структуру SDL_SysWMmsg и под одним циклом можно обрабатывать запросы и от сокета и от юзера.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.09.2016, 02:05
Помогаю со студенческими работами здесь

Клиент-Сервер на winsock
Здравствуйте.Пишу простенький Клиент-Сервер на winsock. Вот код сервера: #include<winsock2.h> #ifndef NDEBUG #include...

Winsock C++ клиент - сервер
#include <winsock2.h> // сервер #include <iostream> using namespace std; int main(){ // инициализация winsock WSADATA...

UDP-сервер/клиент на Winsock
Доброго времени суток Есть UDP сервер и клиент, реализованные средствами winsock. Пока что все отрабатывается на одной машине, так что...

Как сделать чтобы сервер на winsock ожидал клиента на любой порт??
Как сделать чтобы сервер на winsock ожидал клиента на любой порт??

winsock - клиент\сервер (теряется часть сообщения)
Доброго времени суток. Столкнулся с такой проблемкой: с клиента посылаю сообщение с текстом "connected" функцией: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод https:/ / **********/ gallery/ thinkpad-x220-tablet-porn-gzoEAjs . . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru