|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
17.03.2014, 22:12 | #1 |
Delphi 10 Seattle
Пользователь
Регистрация: 01.11.2010
Сообщений: 90
|
Узнать ID соединения (Socket)
Есть n-число клиентов и сервер, клиент посылает определенные команды серверу, сервер их обрабатывает. Как узнать ID данного клиента который посылает команды (т.е. ID соединения)?
|
17.03.2014, 23:13 | #2 |
Delphi 10 Seattle
Пользователь
Регистрация: 01.11.2010
Сообщений: 90
|
И еще:
Допустим что у каждого клиента на форме есть ListBox, один из клиентов послал команду в виде переменной (например str := 'Hello') для сервера. Сервер обрабатывает команду и отправляет всем запущенным клиетам команду мол нужно добавить эту переменную в свой ЛистБокс. Все отлично происходит. Но если клиент отключается, то он должен посылать команду "удалить переменную из лист бокса" для сервера и опять же сервер отправляет всем клиентам. Но тут возникла проблема, если клиент отключается, то он не может отправить команду, поэтому нужно отправлять команду до отключения. Но если сделать так, то команда не успевает дойти/обработаться/отправиться назад и вылетает Socket Error. Что посоветуете? |
17.03.2014, 23:14 | #3 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Хендл что ли? В OnConnect по идее можно узнать. Если я правильно помню.
Я когда-то просто при очередном коннекте в StringList записывал никнейм юзера (который тот мне присылал при коннекте, всмысле после коннекта) и присваивал свойству objects этого никнейма очередной socket, который приконнектился. Так собсно и ID хранить незачем - хранятся сами сокеты.
I'm learning to live...
|
18.03.2014, 16:34 | #4 |
Delphi 10 Seattle
Пользователь
Регистрация: 01.11.2010
Сообщений: 90
|
Ну допустим от клиента (а) нужно отправить команду клиенту (б), команда проходит через сервер и чтобы отправить клиенту (б) нужно знать его ID
Socket.Connections[id клиента b].SendText(..); Вот для этого именно и нужно мне узнать ID. А вмсысле Хендл? SocketHandle? |
19.03.2014, 22:22 | #5 |
Delphi 10 Seattle
Пользователь
Регистрация: 01.11.2010
Сообщений: 90
|
Ребят, прошу помогите хоть кодом чтоли, либо идеей какой нибудь, а то в голову ничего умного не лезет.
|
19.03.2014, 22:32 | #6 |
Регистрация: 06.03.2014
Сообщений: 5
|
а если для каждого из клиентов на сервере создать определенную переменную в которую писать массив созданных событий, если клиент отключается то и массив етих событий удаляется и при обновлении клиентов им придет извещении об отсутствии соответствующих отключенному клиенту событий\переменных.
|
20.03.2014, 14:39 | #7 | |
Delphi 10 Seattle
Пользователь
Регистрация: 01.11.2010
Сообщений: 90
|
Цитата:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Узнать скорость интернет-соединения | t2skler | Работа с сетью в Delphi | 2 | 13.12.2010 22: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 18:05 |
Определение сокета | SLASH_CyberPunk | Работа с сетью в Delphi | 3 | 21.07.2008 13:02 |