Форум: "Сети";
Текущий архив: 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