Форум программистов, компьютерный форум, киберфорум
C++: Сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
2 / 2 / 2
Регистрация: 27.08.2013
Сообщений: 156

Создание сокетов для 10 клиентов

25.09.2013, 06:20. Показов 1454. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброе утро , есть пример работы сокета. Он работает и это уже хорошо. Вопрос в следующем как создать 10 сокетов для 10 клиентов ? Где должен быть цикл. Вопрос возможно глупый но я уже всю голову сломал
C++ (Qt)
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
36
37
38
39
40
41
42
43
44
#include <winsock2.h>
#include <stdio.h>
 
int main()
{
    //инициализируем процесс библиотеки wsock32.dll
    WORD sockVer;
    WSADATA wsaData;
    int retVal;
    sockVer = MAKEWORD(2,2);
    WSAStartup(sockVer, &wsaData);
    //Создаем сокет
    SOCKET servSock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
    //задаем параметры для сокета (сервера)
    SOCKADDR_IN sin;
    sin.sin_family = PF_INET;
    sin.sin_port = htons(1111);
    sin.sin_addr.s_addr = INADDR_ANY;
    //подключаем socket к коммуникационной среде    
    retVal = bind(servSock, (LPSOCKADDR)&sin, sizeof(sin));
    //Пытаемся начать слушать сокет
    retVal = listen(servSock, 10);
    //Ждем клиента
    SOCKET clientSock; 
    clientSock = accept(servSock, NULL, NULL);
 
 /////////////////////////////////////////////////
    //Отправляем сообщение клиенту!
    char szReq[18]; //массив для отправки сообщения
    char *szResp = "HELLO_WORLD"; // присваиваем значение массиву
    retVal = send(clientSock, szResp, strlen(szResp), 0); //отсылаем клиенту
 
    retVal = recv(clientSock, szReq, 8, 0);
    printf(szReq);
 
    //Закрываем сокет
    closesocket(clientSock);
    closesocket(servSock);
 
    WSACleanup();
    
    system("pause");
    return 0;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.09.2013, 06:20
Ответы с готовыми решениями:

Для знатоков сокетов
Есть программа, в которой имеется глобальный сокет. Он подсоединен. В программе запускается несколько потоков. Допустим поток1...

Использование сокетов для сервера с множеством клиентов
Здравствуйте. Суть в том: есть веб-приложение (работает локально внутри заведения. Клиентов не больше 250, но, скорее всего,...

Сервер не отправляет сообщ для всех клиентов (ЧАТ с использ-ем сокетов)
В общем такая проблемка небольшая: Сервер не отправляет сообщ для всех клиентов (ЧАТ с использ-ем сокетов).На скрине отчетливо видно,что...

7
Модератор
 Аватар для vxg
3406 / 2177 / 354
Регистрация: 13.01.2012
Сообщений: 8,444
25.09.2013, 16:16
в цикле вызывать акцепт. если входящие подключения есть - принимать их и вносить в список подключений. если входящих подключений нет - переходить к циклу перебора имеющихся подключений. в цикле перебора имеющихся подключений для каждого из них проверять селектом есть ли данные в буфере приема. если есть - принимать данные. после перебора подключений можно заделать отправку если это предусматривается алгоритмом работы.
для баловства можно поглядеть тут http://alphacity.netii.net/tree/prjs-web.htm
0
43 / 40 / 2
Регистрация: 21.09.2009
Сообщений: 145
25.09.2013, 19:20
Слушаем клиента, как только клиент соединился, создаем для него поток, где он общается с сервером, далее переходим опять в режим "прослушки" чтобы принять очередного клиента...
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
while((client_socket=accept(mysocket, (sockaddr *)&client_addr, &client_addr_size)))
{
 
      //Тут создаем поток для клиента, 
      DWORD thID;
      CreateThread(NULL,NULL,SexToClient, &client_socket,NULL,&thID); //Желательно обработать на BOOL
}
 
//Функция общения с клиентом
DWORD WINAPI SexToClient(LPVOID client_socket)
{
    SOCKET my_sock;
    my_sock=((SOCKET *) client_socket)[0];
 
   int nRecv = recv(my_sock, ....);
 
   if(nRecv > 0)
  {
     //Чтонить делаем.
   }
 
    return 0;
}
p.s материал по теме http://citforum.ru/book/cook/winsock.shtml
1
Модератор
 Аватар для vxg
3406 / 2177 / 354
Регистрация: 13.01.2012
Сообщений: 8,444
25.09.2013, 19:46
Цитата Сообщение от fridi Посмотреть сообщение
создаем для него поток
и попадаем на сомнительные головняки с параллельными потоками и потерю ресурсов на переключение между потоками.. хотя для некоторых применений можно и так, спору нет
0
43 / 40 / 2
Регистрация: 21.09.2009
Сообщений: 145
25.09.2013, 20:01
я не стал комен. ваш бред сверху который вы написали во 2ом посте, т.к такой ху??ни я еще не когда не слышал, однако вы сами меня спровоцировали, дабы вас не считать треплом залейте кодес, который по вашей теории лучше работает, чем те техники которые описаны в частности на том ресурсе где моя ссылка.
в цикле вызывать акцепт. если входящие подключения есть - принимать их и вносить в список подключений. если входящих подключений нет - переходить к циклу перебора имеющихся подключений.
то что вы написали это не просто бредятина, это клиника.
p.s в частности кодес для многопоточного tcp-сервера.
1
Модератор
 Аватар для vxg
3406 / 2177 / 354
Регистрация: 13.01.2012
Сообщений: 8,444
25.09.2013, 20:21
Цитата Сообщение от fridi Посмотреть сообщение
такой ху??ни я еще не когда не слышал
если приземленный до уровня бытового языка текст описывающий очевидные вещи не может быть вами понят - это ваши проблемы: значит все либо очень плохо, либо корона жмет
Цитата Сообщение от fridi Посмотреть сообщение
дабы вас не считать треплом
дабы самому не быть треплом прежде чем пи#деть пошли бы по ссылке и разобрали бы код который описывает те самые "ху??ни" - может быть и не нужно было бы сочинять для меня этот плачь Ярославны
Цитата Сообщение от fridi Посмотреть сообщение
по вашей теории лучше работает
не претендую на истину в последней инстанции, однако, если процесс выполняется на одном камне все эти потоки - только дополнительный тупизм
Цитата Сообщение от fridi Посмотреть сообщение
p.s в частности кодес для многопоточного tcp-сервера.
этого я не понял
0
43 / 40 / 2
Регистрация: 21.09.2009
Сообщений: 145
25.09.2013, 21:52
не претендую на истину в последней инстанции
если вы не претендуете на истинность, то зачем свой рот открываете? попросту? треп устраивайте со своими друзьями, коль вам поговорить охотно.
однако, если процесс выполняется на одном камне все эти потоки - только дополнительный тупизм
причем тут потоки и один камень? непонятно, по вашему потоки нужны только тогда когда > 1 ядра есть?
только дополнительный тупизм
тупизм - это то что вы пишите, даже это не тупизм,
а ,болезнь.
короче с вами все понятно больше я не буду отвечать в этом топе, оставляю вас на едине со своими блестящими алгоритмами, которые судя по всему используются только для "боловства"
0
Модератор
 Аватар для vxg
3406 / 2177 / 354
Регистрация: 13.01.2012
Сообщений: 8,444
26.09.2013, 06:54
Цитата Сообщение от fridi Посмотреть сообщение
то зачем свой рот открываете?
такой же бессмысленный вопрос могу задать вам
Цитата Сообщение от fridi Посмотреть сообщение
по вашему потоки нужны только тогда когда > 1 ядра есть?
с точки зрения производительности для всей очереди запросов - да.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.09.2013, 06:54
Помогаю со студенческими работами здесь

Создание сервера для работы удаленных клиентов
Добрый день. Прошу помощи в консультации по моему проекту. Имею парк 10-15 ПК для серфинга в интернете, на которые заходят удаленные...

Создание отчета по оплате клиентов: вывод документов оплаты и курсов для каждого Клиента
Здравствуйте, столкнулся с проблемой при создании формы отчета . Что я пытаюсь сделать? Имеется макет подобного вида . Данные берутся...

Создание сырых сокетов
Есть программа которая создает сырые сокеты, для этого ее нужно запускать от супер пользователя. Можно это как нибудь обойти? Указать...

Создание информационного канала с применением сокетов
Помогите пож-та написать прогу с использованием сокетов. Прога не очень сложная, но я в ней не вижу своей ошибки... Почему-то клиент не...

Создание нескольких прослушивающих сокетов (Linux)
Доброго времени суток! Пишу под Linux на С++ приложение которому необходимо иметь два слушающих сокета на разных портах. ...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
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
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru