Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.07.08;
Скачать: CL | DM;

Вниз

Помогите разобратся с ServerSocket.......ActiveConnections......   Найти похожие ветки 

 
black_angel_S ©   (2002-04-29 06:45) [0]

Ребята помогите разобратся.......
Вобщем пишу маленький прокси на стандартных компонентах Client и Server Socket..
Вопрос как обратится к какому нибудь соединению в server socket я пробовал CONNECTIONS[] работает но как мне оторвать нужное и как узнать какое допустим что их много они меняются activeconnections тут не большой помошник .....
Если можно пример исходник.....


 
Digitman ©   (2002-04-29 08:37) [1]

По какому критерию ты собираешься определять, нужное оно тебе (соединение) или ненужное ?


 
cyborg ©   (2002-04-29 21:31) [2]

Как уже тут говорили, у socket есть поинтер data, вот на этот поинтер можно повесить любые данные, например хоть:

PData = ^ZData;
Zdata = record
IP : String[15];
Name : String[20];
{-- и прочая мукулатура, что душе угодно --}
end;

procedure TMainForm.ServerSocket1ClientConnect(Sender: TObject;
Socket: TCustomWinSocket);
Var
_Data : PData;
begin
GetMem(_Data,SizeOf(ZData));
Socket.Data:=_Data;
_Data.IP:=Socket.RemoteAddress; {Сохраняем IP}
_Data.Name:=""; {Просто инициализируем, что бы глюков не было, пока не знаем, но потом узнаем и запишем}
End;

procedure TMainForm.ServerSocket1ClientDisconnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
FreeMem(Socket.Data,SizeOf(ZData));
{Освободить занимаемую память, тут говорили, что Дельфи сама это дело освобождает, но я нигде в справке это не нашёл, так что лучше это сделать самому}
End;

procedure TMainForm.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
Var
_Data : PData;
begin
{----тут код молучения мессаги-----}
{---если пришло имя, то записать---}
_Data:=Socket.Data; {Берём Data этого сокета}
_Data.Name:="Пришедшее имя";
End;


Возможны небольшие ошибки в ексте :-(
Если это помогло, то это кУрУтО :-)


 
Fredericco ©   (2002-04-30 13:23) [3]

2cyborg © Согласен, код интересный. Но не проще ли через Socket.SocketHandle? Даже если на одной машине установить несколько серверов, то у каждого нового соединения на любом сервере будет уникальный Socket.SocketHandle на данной машине.


 
Fredericco ©   (2002-04-30 13:27) [4]

black_angel_S © А потом пишешь:

for i:=0 to ServerSocket1.Socket.ActiveConnections-1 do
if ServerSocket1.Socket.Connections[i].SocketHandle=Handle then
ServerSocket1.Socket.Connections[i].SendText(Text);



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

Текущий архив: 2002.07.08;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.013 c
3-23460
Tutov Roman
2002-06-13 16:56
2002.07.08
SQL запрос


1-23601
Paco
2002-06-24 13:37
2002.07.08
Как избавиться от borlndmm.dll, cc3250mt.dll и bpl-вайлов


1-23649
Looser
2002-06-26 09:34
2002.07.08
Компилятор выдает ошибку Access violation... Need Help!


3-23481
Sniffer
2002-06-16 12:16
2002.07.08
Как узнать, существует ли Таблица?


3-23516
PTE
2002-06-17 20:46
2002.07.08
DBgrid дублируются строчки