Форум программистов  
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Delphi > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 17.03.2014, 22:12   #1
PaHaNjkee
Delphi 10 Seattle
Форумчанин
 
Аватар для PaHaNjkee
 
Регистрация: 01.11.2010
Сообщений: 85
Репутация: 16

skype: pahanjkee
По умолчанию Узнать ID соединения (Socket)

Есть n-число клиентов и сервер, клиент посылает определенные команды серверу, сервер их обрабатывает. Как узнать ID данного клиента который посылает команды (т.е. ID соединения)?
PaHaNjkee вне форума   Ответить с цитированием
Старый 17.03.2014, 23:13   #2
PaHaNjkee
Delphi 10 Seattle
Форумчанин
 
Аватар для PaHaNjkee
 
Регистрация: 01.11.2010
Сообщений: 85
Репутация: 16

skype: pahanjkee
По умолчанию

И еще:
Допустим что у каждого клиента на форме есть ListBox, один из клиентов послал команду в виде переменной (например str := 'Hello') для сервера. Сервер обрабатывает команду и отправляет всем запущенным клиетам команду мол нужно добавить эту переменную в свой ЛистБокс. Все отлично происходит. Но если клиент отключается, то он должен посылать команду "удалить переменную из лист бокса" для сервера и опять же сервер отправляет всем клиентам. Но тут возникла проблема, если клиент отключается, то он не может отправить команду, поэтому нужно отправлять команду до отключения. Но если сделать так, то команда не успевает дойти/обработаться/отправиться назад и вылетает Socket Error. Что посоветуете?
PaHaNjkee вне форума   Ответить с цитированием
Старый 17.03.2014, 23:14   #3
Stilet
Белик Виталий :)
Профессионал
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Адрес: Украина, Донецкая область, г. Краматорск
Сообщений: 57,960
Репутация: 6799
По умолчанию

Хендл что ли? В OnConnect по идее можно узнать. Если я правильно помню.
Я когда-то просто при очередном коннекте в StringList записывал никнейм юзера (который тот мне присылал при коннекте, всмысле после коннекта) и присваивал свойству objects этого никнейма очередной socket, который приконнектился. Так собсно и ID хранить незачем - хранятся сами сокеты.
__________________
I'm learning to live...
Stilet вне форума   Ответить с цитированием
Старый 18.03.2014, 16:34   #4
PaHaNjkee
Delphi 10 Seattle
Форумчанин
 
Аватар для PaHaNjkee
 
Регистрация: 01.11.2010
Сообщений: 85
Репутация: 16

skype: pahanjkee
По умолчанию

Ну допустим от клиента (а) нужно отправить команду клиенту (б), команда проходит через сервер и чтобы отправить клиенту (б) нужно знать его ID
Socket.Connections[id клиента b].SendText(..);

Вот для этого именно и нужно мне узнать ID. А вмсысле Хендл? SocketHandle?
PaHaNjkee вне форума   Ответить с цитированием
Старый 19.03.2014, 22:22   #5
PaHaNjkee
Delphi 10 Seattle
Форумчанин
 
Аватар для PaHaNjkee
 
Регистрация: 01.11.2010
Сообщений: 85
Репутация: 16

skype: pahanjkee
По умолчанию

Ребят, прошу помогите хоть кодом чтоли, либо идеей какой нибудь, а то в голову ничего умного не лезет.
PaHaNjkee вне форума   Ответить с цитированием
Старый 19.03.2014, 22:32   #6
Drabadan
 
Регистрация: 06.03.2014
Сообщений: 5
Репутация: 10
По умолчанию

Цитата:
Сообщение от PaHaNjkee Посмотреть сообщение
Ребят, прошу помогите хоть кодом чтоли, либо идеей какой нибудь, а то в голову ничего умного не лезет.
а если для каждого из клиентов на сервере создать определенную переменную в которую писать массив созданных событий, если клиент отключается то и массив етих событий удаляется и при обновлении клиентов им придет извещении об отсутствии соответствующих отключенному клиенту событий\переменных.
Drabadan вне форума   Ответить с цитированием
Старый 20.03.2014, 14:39   #7
PaHaNjkee
Delphi 10 Seattle
Форумчанин
 
Аватар для PaHaNjkee
 
Регистрация: 01.11.2010
Сообщений: 85
Репутация: 16

skype: pahanjkee
По умолчанию

Цитата:
Сообщение от Drabadan Посмотреть сообщение
а если для каждого из клиентов на сервере создать определенную переменную в которую писать массив созданных событий, если клиент отключается то и массив етих событий удаляется и при обновлении клиентов им придет извещении об отсутствии соответствующих отключенному клиенту событий\переменных.
Попробую. У меня была идея присваивать значение переменной клиента Server.Socket.ActiveSonnection-1, потом если ID клиента >= Server.Socket.ActiveSonnection-1 то просто удаляем на клиенте переменную, а если меньше, то удаляем переменную и у всех клиентов изменяем переменную с ID подключения на -1
PaHaNjkee вне форума   Ответить с цитированием
Ответ



Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Узнать скорость интернет-соединения t2skler Работа с сетью в Delphi 2 13.12.2010 23:54
Как узнать основной шлюз соединения? TwiX Работа с сетью в Delphi 0 13.09.2010 20:02
Ошибка сокета Djem1991 Работа с сетью в Delphi 4 16.06.2010 15:39
ip для сокета Solan C/C++ Сетевое программирование 4 07.03.2010 19:05
Определение сокета SLASH_CyberPunk Работа с сетью в Delphi 3 21.07.2008 13:02




06:28.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

купить трафик


как улучшить посещаемость, а также решения по монетизации сайтов, видео и приложений

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru