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

Асинхронное серверное приложение

29.05.2014, 20:04. Показов 929. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Создал клиент-серверное приложение на C++/CLI на базе WinForms используя код отсюда: http://msdn.microsoft.com/ru-r... s.85).aspx . При запуске сервера, приложение начинает слушать порт и постоянно висит в ожидании(т.е. ни закрыть, ни батон нажать какой-нибудь). Что нужно переделать в исходном примере, дабы поведение сервера было асинхронным и можно было выполнять другие операции? Заранее спасибо.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.05.2014, 20:04
Ответы с готовыми решениями:

Клиент-серверное приложение
Была поставлена задача сделать серверное приложение работающее на выбранном порту. С телефона должна быть возможность подключаться к компу...

Клиент-серверное приложение
Использую простой найденный сервер. Там есть строка принимающая данные: bytes_read = recv(*it, buf, 8, 0); ..клиент, соответственно...

клиент-серверное приложение
Привет всем) Помогите пожалуйста... мне интересны клиент-серверные приложения... у меня есть несколько вопросов: 1) можно ли ето в dev...

8
153 / 148 / 66
Регистрация: 20.02.2014
Сообщений: 556
30.05.2014, 09:26
SerjInsane, 1 - использовать дополнительный поток, в котором и будете слушать порт. 2 - Использовать неблокирующие сокеты ioctlsocket
1
Модератор
 Аватар для vxg
3409 / 2181 / 354
Регистрация: 13.01.2012
Сообщений: 8,461
30.05.2014, 11:30
еще можно пользовать select для проверки наличия входящих данных
1
503 / 352 / 94
Регистрация: 22.03.2011
Сообщений: 1,112
30.05.2014, 17:13
Я бы посоветовал посмотреть в сторону boost::asio.
1
 Аватар для Aneron
166 / 164 / 27
Регистрация: 20.04.2010
Сообщений: 607
03.06.2014, 12:06
Я бы использовал select.
1
0 / 0 / 0
Регистрация: 18.10.2012
Сообщений: 30
04.06.2014, 20:50  [ТС]
буду очень благодарен за пример с использованием select и небольшими комментариями.
0
Модератор
 Аватар для vxg
3409 / 2181 / 354
Регистрация: 13.01.2012
Сообщений: 8,461
05.06.2014, 07:00
вот тут Удаленный однострочный редактор есть архив socket (tcp udp remote editor).rar где были куски содержащие select
0
0 / 0 / 0
Регистрация: 18.10.2012
Сообщений: 30
05.06.2014, 20:21  [ТС]
vxg, что-то не смог я разобраться что к чему.

нужны пояснения. что и куда передавать, и в каком месте. поэтому все же еще раз попрошу кому не сложно накидайте примерчик, желательно в рамках кода, который я скинул с msdn.
0
Модератор
 Аватар для vxg
3409 / 2181 / 354
Регистрация: 13.01.2012
Сообщений: 8,461
06.06.2014, 07:08
вот для примера кусок который ждет клиента
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
25
26
27
28
29
30
31
32
33
34
35
    printf("wait for client...");
 
    int select_res = 0;
    while (true)
    {
        fd_set s_set;
        FD_ZERO(&s_set);
        FD_SET(s, &s_set);
        timeval timeout = {0, 0};
        select_res = select(s + 1, &s_set, 0, 0, &timeout);
        if (select_res) break;
 
        Sleep(250);
    }
    if (select_res == SOCKET_ERROR)
    {
        printf("select error\n");
        system("pause");
        return -1;
    }
 
    SOCKET ns;
 
    SOCKADDR_IN nsa;
    int sizeof_nsa = sizeof(nsa);
 
    ns = accept(s, (SOCKADDR *)&nsa, &sizeof_nsa);
    if (ns == INVALID_SOCKET)
    {
        printf("accept error\n");
        system("pause");
        return -1;
    }
 
    printf("connected\n");
вот огрызок который ожидает данные
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
25
        fd_set s_set;
        FD_ZERO(&s_set);
        FD_SET(s, &s_set);
 
        timeval timeout = {0, 0};
 
        int select_res = select(s + 1, &s_set, 0, 0, &timeout);
        if (select_res == SOCKET_ERROR)
        {
            printf("select error\n");
            system("pause");
            return -1;
        }
        if (select_res)
        {
                int package_size = recv(s, buffer, buffer_size, 0);
                if (package_size == SOCKET_ERROR)
                {
                    printf("recv error\n");
                }
                else if (!package_size)
                {
                    printf("disconnected\n");
                }
        }
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.06.2014, 07:08
Помогаю со студенческими работами здесь

Не работает серверное приложение
да и вообще посоветуйте где можно почитать про программирование tcp/ip и сокеты пожалуйста //#define _WINSOCK_DEPRECATED_NO_WARNINGS ...

Клиент-серверное приложение
Пишу упрощенный чатик. Возникла проблема с клиентской частью приложения. Я создал отдельный поток для обработки сообщений от...

Клиент-серверное приложение на C++
Здравствуйте. Хочу заняться разработкой клиент-серверного приложения на C++. Язык я знаю на достаточном уровне, но в сетевых приложениях ни...

Клиент-серверное приложение C++
Необходимо реализовать клиент-серверное приложение, которое будет передавать файл, с использованием именованных каналов. Но я никогда не...

Клиент-серверное приложение
Здравствуйте Помогите пожалуйста с первым клиент серверным приложением. Не могли бы вы подсказать хорошую литературу, статью(они...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru