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

ServerSocket, как ответить тому, от кого получено сообщение?

15.06.2016, 11:25. Показов 886. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день. Помогите пожалуйста.

Пытаюсь сделать клиент и сервер на сокетах. Сервер смотрит в базу, клиент получает инфу из базы через сервер.

Все работает. Но надо придумать как заставить работать сервер с несколькими клиентами.


На данный момент сервер отвечает вот таким образом:

C++
1
Server->Socket->Connections[0]->SendText(OrgList);
Ответ естественно получает клиент с подключением 0.


Код обработки принятого текста выглядит как то так:


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
void __fastcall TForm1::ServerClientRead(TObject *Sender, TCustomWinSocket *Socket)
 
{
 
String RecText=Socket->ReceiveText();
Memo1->Lines->Add(RecText);
 
 
 
////ОБРАБОТКА ЗАПРОСА СПИСКА ОРГАНИЗАЦИЙ
if(RecText.SubString(1,RecText.Pos("~")-1)=="AUTH_ORG") //Если поступила команда на запрос организаций, то ответить списком организаций
{
    Memo1->Lines->Add("Запрос списка организаций от:" + Socket->RemoteHost);
 
    ADOQuery1->Active=false;
    ADOQuery1->SQL->Text="select name,OrganizationId from organization where IsAccess=1 order by name";
    ADOQuery1->Active=true;
 
    String OrgList="AUTH_ORG~"; //переменная для отправки через сокет
    ADOQuery1->First();
    while(!ADOQuery1->Eof)
    {
        OrgList=OrgList + Trim(ADOQuery1->Fields->Fields[0]->AsString) + "|" + Trim(ADOQuery1->Fields->Fields[1]->AsString) + "|" ;
        ADOQuery1->Next();
    }
    ADOQuery1->Active=false;
    //ShowMessage(OrgList);
    Server->Socket->Connections[0]->SendText(OrgList);
}
////////////////////////////////////////
Вопрос - как можно определить, по какому номеру подключения мы приняли текст: String RecText=Socket->ReceiveText();

Возможно это какой то параметр у Socket, но я не могу найти какой. Если есть хелп по параметрам Socket - я бы почитал, но найти не смог или не знаю как искать.

Заранее спасибо.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.06.2016, 11:25
Ответы с готовыми решениями:

Сообщение не было получено одним или несколькими получателями.
Прошу помощи в прояснение ситуации. При отправке почты приходит сообщение: Администратор системы Сообщение не было получено одним или...

ServerSocket ответ клиенту, отправившему сообщение
Доброго времени суток, программисты! Мне нужна помощь. Я делаю на сокетах групповой чат в C++ Builder и всё получалось, но появилась одна...

Как научиться писать грамотно программы со смыслом?)Почему у кого то получается,а у кого то нет?Мож поделитесь Хитростями:)
Интересно просто,или расскажите вашу историю скоко учились,скоко ошибок было в изучении С++,а то иногда так сложно распишут что думаешь...

2
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33405 / 21515 / 8236
Регистрация: 22.10.2011
Сообщений: 36,916
Записей в блоге: 12
15.06.2016, 12:16
Цитата Сообщение от Ne_sudba Посмотреть сообщение
как можно определить, по какому номеру подключения мы приняли текст
Зачем? Ты же получаешь текст через какой-то Socket (параметр типа TCustomWinSocket), ему же и отправляй ответ
0
2 / 2 / 0
Регистрация: 19.02.2015
Сообщений: 12
15.06.2016, 14:50  [ТС]
Понял, спасибо!
То есть в обработке события принятия информации , отправляем обратно с помощью Socket->SendText.
А я раньше отправлял всегда ServerSocket->Socket->Connections[0]->SendText.

В большинстве примеров все так делали, вот я видимо и решил, что так надо.

Вообще по этим компонентам довольно мало информации, что грустно. Вот бы найти их подробное описание
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.06.2016, 14:50
Помогаю со студенческими работами здесь

Физика НГТУ - как по образцу было получено это значение?
Физика НГТУ - как по образцу было получено это значение J0? Добрый я уж и так и сяк значение в формулу подставлял и не получается это...

ServerSocket как узнать IP
Здравствуйте. Есть клиент-серверное приложение, сервер находится на удаленном пк, как можно получить в коде статический IP адрес...

ServerSocket: как узнать идентификатор в массиве Connections? Или же как определить отправителя?
Тема "предшественник": https://www.cyberforum.ru/cpp-builder/thread2278781.html, в той теме решалась проблема с клиенткой частью, эта тема...

Как в ServerSocket запустить процессы?
У меня вот такая проблема , мне нужно чтобы сервер обрабатывал одновременно множество запросов от клиентов и отсылал им ответ . Вроде...

Синтаксис MySQL равно тому-то и не равно тому-то
Добрый день, уважаемые коллеги :senor: Подскажите, пожалуйста, а то что-то запутался. Как правильно сделать селект с условием равно...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru