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

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

25.09.2013, 06:20. Показов 1487. Ответов 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
3409 / 2180 / 354
Регистрация: 13.01.2012
Сообщений: 8,458
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
3409 / 2180 / 354
Регистрация: 13.01.2012
Сообщений: 8,458
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
3409 / 2180 / 354
Регистрация: 13.01.2012
Сообщений: 8,458
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
3409 / 2180 / 354
Регистрация: 13.01.2012
Сообщений: 8,458
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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru