![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TIdCmdTCPServer
Zalm © (2009-08-31 13:14:00)Здравствуйте, как у TIdCmdTCPServer можно всем клиентам разослать сообщение? Надо например каждому отослать команду. Это должно быть естественно в цикле, только я не знаю как и где. У TServerSocket было проще всё, ну или понятней.
1)Вот например у меня есть кнопка на сервере, как сделать чтоб ы при нажатии на кнопку каждому подключению что-то отправить, и что бы узнать его адрес там и тд?
2) Как узнать ip и handler подключения? и в каком евенте... если в OnConnect то я не опнля как...
3) Как вне событий отправить текст на подключение с известным адресом\обработчкиом?
Буду очень благодарен за помощь.
Сергей М. (2009-12-03 12:46:00) [1]Ну поставь брейкпойнт да посмотри что у тебя там не там или не так на самом деле происходит ..
Zalm (2009-12-03 12:37:00) [2]Вы смотрели мой пример? когда я так делаю ничего не происходит вобще
Сергей М. (2009-12-02 21:27:00) [3]
> давайте я новую создам?
Думаешь новая редька будет слаще ?)
Сомневаюсь)
> Как можно изнутри сервера вызвать эвент обработчика комманды
Как обычный метод обычного объекта.
Zalm (2009-12-02 20:46:00) [4]Ну давайте я новую создам?)
У меня больше нет вопросов кроме этого... может всё же ответите пожалуйста если знаете?)
Сергей М. (2009-12-01 13:30:00) [5]Да просто надаела уже эта тягомотина хуже горькой редьки)
Zalm (2009-12-01 13:16:00) [6]Забанили тему что ли?...
Zalm (2009-11-28 02:57:00) [7]Как можно изнутри сервера вызвать эвент обработчика комманды как будто клиент прислал такую команду?
Procedure pr;
var
command : TidCommand;
begin
command.CommandHandler.Command:='0x18';
Form1.Client.CommandHandlers.Items[13].OnCommand(command);
end;
О еще вопрос, эта процедура вызывается в доп. потоке, нужно ли синхронизировать его с основным что бы обратиться к компоненту сервера?... при создании доп. потока писали что нужно синхронизировать, но компонент сервера это же вроде не какая-то штука для окна и не видно никаких визуальных изменений на форме...
Dennis I. Komarov (htc) (2009-10-29 22:29:00) [8]а что? прогресс на лицо ;) и логика появилась...
Сергей М. (2009-10-29 22:12:00) [9]
> except
> Result:=False;
> end;
> Result:=True;
Сам-то понял, что ты тут творишь ?)
Zalm (2009-10-29 21:58:00) [10]вот, если отправит не работающему подключение функция должна вернуть false, однако не возвращает. Или где я не правильно написал?
Function Send(ip:string;port:word;str:string):boolean;
var
i : integer;
List : Tlist;
begin
try
LIst:=Form1.Server.Contexts.LockList;
for I := 0 to List.Count - 1 do
with TidContext(List[i]) do
begin
if (connection.Socket.Binding.PeerIP=ip)and(connection.Socket.Binding.PeerPort=port ) then
begin
try
TidContext(list[i]).Connection.Socket.WriteLn(str);
except
Result:=False;
end;
Result:=True;
break;
end;
end;
finally
Form1.Server.Contexts.UnlockList;
end;
end;
Dennis I. Komarov (2009-10-29 16:14:00) [11]
> Zalm © (29.10.09 16:05) [139]
Ну, может совесть проснется, так не книжку какую-нить почитать, а хотя бы вопросы формулировать понятно будем...
Zalm (2009-10-29 16:05:00) [12]хех... детский сад\не детский... зачем вот это всё говорить надо.
Dennis I. Komarov (2009-10-29 12:37:00) [13]
> Ну, наверно, тех, которые уборщица Тётьклава случайно оборвала
> орудуя шваброй)
Дома уборщица тетя Клава, а на программиста денег нету...
Сергей М. (2009-10-29 12:19:00) [14]
> Dennis I. Komarov © (29.10.09 12:07) [136]
> Это каких таких?
Ну, наверно, тех, которые уборщица Тётьклава случайно оборвала орудуя шваброй)
> Zalm © (29.10.09 11:53) [135]
> А как мне тогда убирать не работающие подключения?
Надо обратиться к такому подключению.
При отсутствии петли подключения попытка вызова метода передачи должна привести к исключению соотв.класса.
Dennis I. Komarov (2009-10-29 12:07:00) [15]Детский сад продолжается? :)
> А как мне тогда убирать не работающие подключения?
Это каких таких?
Zalm (2009-10-29 11:53:00) [16]О, Сергей опять вы) Прям рад что вы мне снова отвечаете))
А как мне тогда убирать не работающие подключения? или как можно сделать что бы сервер сам следил за тем что работатет, а что нет? Посоветуйте пожалуйста как лучше сделать
Сергей М. (2009-10-29 10:31:00) [17]Кудане пишет ?
И разве он обязан куда-то что-то писать ?
Zalm (2009-10-28 17:36:00) [18]Здравствуйте, это опять я) А как убирать мертвые подключения? вернее как узнать когда оно уже не работающее? а то сервер бывает пытается отправить тому что не подключен, отправляет и никакой ошибки не пишет...(
Сергей М. (2009-09-21 08:42:00) [19]CS.Enter;
try
.. обращение к потоконебезопасному ресурсу ..
finally
CS.Leave;
end;
Сергей М. (2009-09-21 08:31:00) [20]
> секции правильно или нет
С учетом того, что обращение к Edit1 не защищено - нет, не правильно.
> Про try..finally слышал, я его обычно для ошибок использую
> Try..Except
Что за бред ?
finally - это finally, а except - это except.
Две разные разницы.