Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2004.05.02;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.029 c
3-1081347600
начинаю-щий
2004-04-07 18:20
2004.05.02
Уникальное значение поля


1-1081873552
Fred Perry
2004-04-13 20:25
2004.05.02
Как получить из clipboard а HTML-код фрагмнета,скопир.из браузера


1-1082031444
Серг
2004-04-15 16:17
2004.05.02
Поиск в Excelевском документе


8-1075150366
Builder
2004-01-26 23:52
2004.05.02
Эффект


3-1081419593
ev
2004-04-08 14:19
2004.05.02
Как через SQL запрос найти значения подстроки, без учета регистра





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский