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

Вниз

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

 
rrew   (2004-02-26 20:32) [0]

Дан сервер, с N подключенными клиентами.
Как можно отослать пределенному клиенту текст, не
используя Connections[index].SendText, так как индекс
клиента все время меняется(при подключении, или отключении других клиентов).


 
Android ©   (2004-02-26 21:06) [1]

Попробуй по ip адресу типа:

...
var
i:integer;
s:string;
begin
for i:=0 to serversocket1.socket.activeconnections-1 do begin
if serversocket1.socket.connections[i].remoteadress=s; then
serversocket1.socket.connection[i].sendtext("your text");
end;
end;
...


 
Android ©   (2004-02-26 21:07) [2]

s - это ip нужного компа


 
Polevi ©   (2004-02-27 09:24) [3]

Socket в OnClientRead, OnClientWrite


 
rrew   (2004-02-27 18:47) [4]

Пример с ИП я уже пробовал, возникает проблема, если на одной машине запущено 2 клиента. Я пробовал с SocketHandle, только не могу разобраться как можно послать так сообщение.


 
TButton ©   (2004-02-27 18:54) [5]


...
var
i:integer;
s:string;
begin
for i:=0 to serversocket1.socket.activeconnections-1 do begin
if serversocket1.socket.connections[i].handle=h; then
serversocket1.socket.connection[i].sendtext("your text");
end;
end;
...


h это handle нужно клиента, можно запоминать в онконнекте, или при логине, или как там у тебя...


 
rrew   (2004-02-27 22:16) [6]

Оригинально!!! До этого я и  сам догадался!!! Но мне нада зделать так что бы не было перебора типа
if serversocket1.socket.connections[i].handle=h; then.....
мне надо типа того
 serversocket1.socket...[handle]...SendText
Как это можно осуществить


 
TButton ©   (2004-02-28 13:38) [7]

боюсь что никак, кроме как через OnRead OnWrite


 
TButton ©   (2004-02-28 14:43) [8]

а чем плох перебор?
для прикола возьми TickCount перед перебором и после, глянь разницу.

или если неудобно каждый раз перебирать - мастрячишь функцию HandleToNum или IPToNum, а еще лучше - SendToIP и SendToHandle
я так делал... т.е. почти так...


 
rrew ©   (2004-02-29 00:08) [9]

Почти так, это как??? Если можно поподробнее


 
TButton ©   (2004-02-29 17:19) [10]

ну у меня был глобальный массив юзеров, каждый юзер представлен record"ом, при логине в его record вписывается handle его сокета, при необходимости вызывается SendToUser(VNUM: integer; s: string) процедура вытаскивает record юзера № VNUM, читает handle его сокета, перебирает connections и шлет текст.


 
rrew ©   (2004-03-01 20:09) [11]

Я нашел решение проблемы:
создаю тип MySock: TCustomWinSocket,
когда надо отправить  соощение делаю так
MySock.Accept(handle);// handle клиента которому надо отправить msg
MySock.SendText(msg);


 
serg128 ©   (2004-03-02 09:57) [12]

while(IPstr.Length())
   {
       tmpIP = IPstr.SubString(1, InpStr.Pos(";")-1);
       IPstr.Delete(1, InpStr.Pos(";"));
       TClientSocket *ClientSocket = new TClientSocket(this);
       ClientSocket->Port = 6002;
       ClientSocket->Address = tmpIP;
       ClientSocket->Active = true;
       ClientSocket->Open();
       Application->ProcessMessages();
       ClientSocket->Socket->SendText(txt);
       ClientSocket->Active = false;
       ClientSocket->Close();
       delete ClientSocket;
   }


 
Digitman ©   (2004-03-02 11:46) [13]


> rrew ©   (01.03.04 20:09) [11]
> Я нашел решение проблемы:
> создаю тип MySock: TCustomWinSocket,
> когда надо отправить  соощение делаю так
> MySock.Accept(handle);// handle клиента которому надо отправить
> msg
> MySock.SendText(msg);


плохое решение

следом за событием OnAccept() обязательно последует событие OnClientWrite(), в котором 2-м параметром будет фигурировать Socket: TCustomWinSocket.. вот его-то send-методы и следует вызывать .. в обработчике того же события


 
Gvammer   (2004-03-02 16:12) [14]

Подскажите, plz, как сделать так, чтобы ServerSocket обробатывал запрос из интернета. На XML, Pearl, Java, НА ЧЕМ-НИБУДЬ!!!!


 
Digitman ©   (2004-03-02 16:24) [15]


> Gvammer   (02.03.04 16:12) [14]


TServerSocket - чистой воды транспортный компонент
ни о каких "XML, Pearl, Java, НА ЧЕМ-НИБУДЬ" он знать не знает
но зато предоставляет тебе возможность обработать события OnClientRead/Write, в которых ты имеешь возможность принять некие данные, проанализировать их формат на соответствие тому иди иному тебя интересующему яз.соглашению, интерпретировать нужным образом эти данные и передать результат интрерпретации в нужном тебе формате тому, кто из запрашивал


 
Gvammer   (2004-03-03 03:03) [16]

Мне-то как раз надо, чтобы программа работала без клиентской части. Нужно получить запрос, посланный с веб-страницы, обработать его и послать обратно инфу из базы данных в зависимости от самого запроса.


 
TButton ©   (2004-03-03 06:16) [17]

2Gvammer
http://www.delphimaster.ru/articles/cgi.html



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

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

Наверх




Память: 0.51 MB
Время: 0.024 c
14-1081770717
Style
2004-04-12 15:51
2004.05.02
Расстрелян московский студент....


1-1081761868
ГАГН
2004-04-12 13:24
2004.05.02
Как проверить Edit ы?


11-1045034380
Un-man
2003-02-12 10:19
2004.05.02
OnIdle в KOL


14-1081239691
unicode
2004-04-06 12:21
2004.05.02
Дата и время в дельфи


14-1081846347
NeyroSpace
2004-04-13 12:52
2004.05.02
Искал я армейские присказки