Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Определить номер клиента.


LiNkS ©   (2002-04-24 14:48:00) 

Как это сделать в сокетах? Т.е. мне нужно отправить ответ сокету приславшему на сервер сообщение - в команде Server.Socket.Connections[Z].sendtext нужно ведь Z вставлять - как его определить?


Ghost.   (2002-04-29 13:11:00) [1]

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


Maxistar   (2002-04-29 11:40:00) [2]

Я использую Form1.ServerSocket.Socket.Connections[I].SocketHandle


Jeck   (2002-04-26 21:14:00) [3]

вот тут посмотри. Там подобное организовано.
http://src.fitkursk.ru/detail.asp?id=819


Jeck   (2002-04-26 21:11:00) [4]

У каждого приконнектившегося есть уникальный ID Handle(Socket->Handle) запоминай его. И по нему потом ищи Connection[i].

что-то в этом роде

for(int i=0;i<ServerSocket->Socket->ActiveConnections;i++)
{
if(ServerSocket->Socket->Handle==myHandle)
{
ServerSocket->Socket->Connections[i]->SendStream(myStream);
break;
}
}


Donal_Graeme   (2002-04-25 10:43:00) [5]

если кто-то отключится, мы получаем событие OnClientDisconnect и можем сделать соответствующие коррективы. а отправлять не через Connections[I] снаружи обработчика события просто не выйдет.

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


cyborg   (2002-04-25 00:04:00) [6]

Дело в том, что эта самая Z может поменяться, например подключено 3 сокета, соответственно Z1=0 Z2=1 Z3=2, если Z1 отключится, то Z2=0 Z3=1 , поэтому посылку таким способом лучше не использовать. Этот способ только годится, если вы хотите отправить всем подключённым одинаковые данные, а сделать это можно вот так:
For I:=0 to Form1.ServerSocket.Socket.ActiveConnections-1 do
Begin
Form1.ServerSocket.Socket.Connections[I].SendBuf(Data,DataSize);
End;

Извините, если что не так, я ещё только начинающий.


Song   (2002-04-24 15:19:00) [7]

а по IP шлют через TClientSocket


Donal_Graeme   (2002-04-24 15:15:00) [8]

если ты собираешься отправлять ответ сразу после получения в событии OnClientRead - то там не надо ничего определять, есть параметр события Socket - это то соединение, с которого пришли данные.. так что Socket.SendText и все дела.


LiNkS   (2002-04-24 15:05:00) [9]

И как вобще слать не по Z, а по IP?


Наверх

Титульная страница Поиск, карта сайта Написать письмо