Главная страница
    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.042 c
14-1081422498
Elast
2004-04-08 15:08
2004.05.02
IB


3-1081168666
AOH
2004-04-05 16:37
2004.05.02
проверка isNull в кобмбобоксе ACCESS


7-1077526364
DiFar
2004-02-23 11:52
2004.05.02
Блокировка нажатия клавиш Windows


11-1057764731
puky
2003-07-09 19:32
2004.05.02
Scrollbox


14-1081417892
Карелин Артем
2004-04-08 13:51
2004.05.02
Как отмазаться от армейки. Совет от MS Word.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский