Вниз
Скачать: CL | DM;

TServerSocket   Найти похожие ветки 

← →
MiHoY   (2006-04-06 10:01) [0]

вот всё думаю и не могу рещить как отслеживать номера соединения пользователей
задача в том, чтобы принять сообщение от одного пользователя и отправить его другому, допустим взять из базы номер соединения этого пользователя.

но тут возникает такая загвоздка: пользователей будет очень много и простым запросом типа эй это ты с таким ID на этом соедениении не прокатит. а также имеет место простое отключение пользователей от сервера => запоминать нак номер тоже не катит


← →
Сергей М. ©   (2006-04-06 10:11) [1]

Каждое соединение уникально идентифицируется по комбинации свойств RemoteAddr+RemotePort, эту комбинацию (а не номер соединения) и следует использовать для решения задачи.


← →
MiHoY   (2006-04-06 11:49) [2]

пример можно
а то не догоняю малость


← →
Сергей М. ©   (2006-04-06 12:15) [3]


> не догоняю малость


Что конкретно ?


← →
MiHoY   (2006-04-06 12:17) [4]


> по комбинации свойств RemoteAddr+RemotePort

на эту часть


← →
Сергей М. ©   (2006-04-06 12:59) [5]

Это свойства объекта TCustomWinSocket.

Того самого, который передается тебе 2-м параметром в обработчик события, например, OnClientConnect


← →
MiHoY   (2006-04-06 13:07) [6]

да это знаю я
ты можешь пример использования дать


← →
Сергей М. ©   (2006-04-06 13:25) [7]

Зачем пример-то, если знаешь ?

Все ж просто - когда тебе нужно отправить сообщение клиенту с таким-то требуемым адресом/портом перебираешь в цикле список Connections и для каждого элемента сравниваешь его RemoteAddress и RemotePort с искомыми.


← →
MiHoY   (2006-04-06 13:27) [8]

а если их 1000000 то что?


← →
Сергей М. ©   (2006-04-06 13:38) [9]


> то что?


То тоже самое.

Хотя иметь 1000000 одновременно активных клиентов твоему серверу вряд ли удастся, особенно если работает он не под управлением серверной ОС.

Только при таких условиях целесообразней будет вести собственный упорядоченный список записей с адресами, портами и ссылками на соотв.объекты, дабы осуществлять поиск в нем не банальным перебором, а с помощью любого высокоэффективного алгоритма поиска данных в упорядоченном списке. Внесение записи в список осуществляй при событии OnClientConnect, удаление - при OnClientDisconnect.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.027 c
3-1141048241
Supklo
2006-02-27 16:50
2006.04.23
Как подключиться к Transbase


3-1141056218
Sollo
2006-02-27 19:03
2006.04.23
dbexpress нужна временная таблица ?


2-1143984013
bogdan
2006-04-02 17:20
2006.04.23
задача на перебор


2-1144664227
Рафик
2006-04-10 14:17
2006.04.23
Подскажите компонент для работы с DBASE локально, без BDE


2-1144448650
ctudent
2006-04-08 02:24
2006.04.23
TreeView+база данных




   Наверх