Форум: "Сети";
Текущий архив: 2002.07.08;
Скачать: [xml.tar.bz2];
ВнизПомогите разобратся с 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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.006 c