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

ServerSocket: как узнать идентификатор в массиве Connections? Или же как определить отправителя?

25.08.2018, 16:14. Показов 1371. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Тема "предшественник": ServerSocket ClientSocket способы получения данных, в той теме решалась проблема с клиенткой частью, эта тема является "продолжением" для серверной чести, т.к. в одной теме можно решать только одну проблему.

Для вхождения в проблему, я пишу программу авторизации, мне нужно принять несколько строк, и отправить клиенту ответ.

Вот с проблемой приема данных на сервере я и столкнулся. У сервера, в отличии от клиента есть массив ServerSocket1->Socket->Connections, и чтобы принять ответ из любой точки программы, необходимо знать идентификатор отправителя в этом массиве.

Можно ли как либо узнать идентификатор внутри OnRead? Как отправить ответ только тому, от кого он пришел?

Добавлено через 6 минут
Если точнее, можно ли после срабатывания OnRead, узнать идентификатор отправителя в массиве Connections?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.08.2018, 16:14
Ответы с готовыми решениями:

Как узнать IP отправителя?
В Incoming надо определить от какого IP пришли данные. Можно ли это узнать средствами C#? Или узнать каким IP будет отправлены данные чтобы...

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

Использование ServerSocket.Socket.Connections[i]
Люди!!! Помогите плиз! Я никак не могу въехать в работу Соккетов. Я посмотрел Чат, который поставляется с Дельфи, но там проблема в том,...

4
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
25.08.2018, 21:26
В обработчике события OnClientRead сервер-сокета в параметрах присутствует TCustomWinSocket *Socket, а у Socket'а свойство Socket->RemoteHost. Этого не достаточно?
0
0 / 0 / 0
Регистрация: 26.07.2018
Сообщений: 11
26.08.2018, 22:21  [ТС]
Цитата Сообщение от nick42 Посмотреть сообщение
В обработчике события OnClientRead сервер-сокета в параметрах присутствует TCustomWinSocket *Socket, а у Socket'а свойство Socket->RemoteHost. Этого не достаточно?
Socket->RemoteHost отображает имя хоста, а оно может совпадать, также как и ip.
Как же мне отличить 2 клиента, запущенных к примеру на одном компьютере?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33371 / 21497 / 8234
Регистрация: 22.10.2011
Сообщений: 36,893
Записей в блоге: 12
26.08.2018, 22:28
Цитата Сообщение от Vlad441 Посмотреть сообщение
Как же мне отличить 2 клиента, запущенных к примеру на одном компьютере?
А зачем тебе их отличать? Socket ты на что получаешь? Для красоты? Вот этот самый Socket запоминай, и ему отсылай, что нужно, почему надо обязательно привязаться к индексу?
0
0 / 0 / 0
Регистрация: 26.07.2018
Сообщений: 11
26.08.2018, 22:57  [ТС]
Цитата Сообщение от volvo Посмотреть сообщение
А зачем тебе их отличать? Socket ты на что получаешь? Для красоты? Вот этот самый Socket запоминай, и ему отсылай, что нужно, почему надо обязательно привязаться к индексу?
Т.е. получить индекс проблематично?

Внутри OnClinetRead я могу ответить на сообщение, а ответы приходят на Socket->ReceiveText(); Но это локальная функция, действующая внутри OnClinetRead, и функцию для отлова пакетов написать не могу.

Для клиентской части я просто глобально отлавливаю пакеты:
C++
1
2
3
4
5
6
7
8
9
10
11
AnsiString RecvMsg(short int timeout)
{
   AnsiString RecText; short int timerms; 
   if(timeout > 0){
      while(RecText == "" && timerms < timeout)
      { Sleep(2); RecText = ClientSocket1->Socket->ReceiveText(); timerms += 2; }
   }else{
      while(RecText == "")
      { RecText = ClientSocket1->Socket->ReceiveText(); } }
   return RecText;
}
Но в серверной части для глобального отлова необходимо знать индекс, чтобы принять пакет от конкретного клиента.
Вот и выходит, либо мне нужно узнать индекс, или что-то придумать с локальным Socket->ReceiveText(), чтобы принимать ответы несколько раз.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.08.2018, 22:57
Помогаю со студенческими работами здесь

Как в Мозиле по мейлу узнать ip отправителя?
В сети вижу как в Оутлуке узнать ip отправителя, имея его мейл. Но меня этот способ не интересует, так как я не парюсь Луком и прочими...

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

Как узнать имя отправителя письма в Outlook?
По теме нашел в этом форуме ответ с таким макросом Dim oApp As Outlook.Application Dim oNameSpace As NameSpace Dim oFolder As...

Как сделать форму для отправки почты и узнать мэил отправителя?
У меня возникла необходимость в добавлении на мою страничку ссылки 'Написать автору' при нажатии на которую откроется форма для ввота...

Как узнать в элементе ServerSocket в OnConnection, какое по счету подключение?
Всем привет. Возник вопрос: как можно узнать в элементе ServerSocket в OnConnection какое идет по счету подключение? Мне необходимо...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru