Консультация № 143682
11.09.2008, 22:12
0.00 руб.
0 1 1
Доброго времени суток!
Предстал перед задачей написать небольшую программку удалённого контроля.
Объясните пожалуйста следующий момент: как в Borland Delphi 7 осуществить передачу сообщения от серверного приложения клиентскому по сети, если известен IP-адрес удалённой машины? Компьютеры находятся в одной рабочей группе.
Зараннее благодарен.

Обсуждение

Неизвестный
11.09.2008, 23:07
общий
это ответ
Здравствуйте, SHERRY!
Самый простой способ - использовать компоненты TServerSocket и TClientSocket. Они располагаются на закладке Internet.
Если там нет етих компонентов, то Вам нужно их установить (в Делфи 6 и 7 они по умолчанию не устанавливаются). Для єтого найдите на установочном диске Делфи файл dclsocketsXX.bpl, где ХХ - номер версии Делфи. Скопируйте его куда-нибудь на жесткий диск, например в поддиректорию bin директории, куда установлен Делфи. В этой папке находятся все bpl-файлы и вполне разумно поместить туда и этот.

После этого в Делфи нужно выбрать пункт Install Package в меню Component. Откроется окно, в нем нажмите кнопку Add, и перед Вами появится стандартное окн открытия файла. Выберите скопированный файл dclsocketsXX.bpl. После етого можете закрывать все открытые окна кнопками OK.

Теперь непосредственно к тому, как передать сообщение:

1) Серверная часть, которая получает сообщение и соответственно его обрабатывает.
- На форму нужно поместить компонент TServerSocket. В его свойстве Port задаем нужный порт (Любое значение от 1024 до 65000).
- При запуске программы пишем строчку ServerSocket1.Activate:=true; - она запускает сервер и открывает указанный порт в ожидании соединения.
- Теперь в событии OnClientRead обрабатываем полученное сообщение, например:
procedure TForm1.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket);
var
s:String;
begin
s:= Socket.ReceiveText;
if s='R' then ExitWindowsEx(EWX_SHUTDOWN,0);
end;

2) Клиентская часть: ставим на форму компонент TClientSocket. Пример его использования:
procedure TForm1.Button1Click(Sender: TObject);
begin
clientsocket1.host:='172.27.8.100';
clientsocket1.active:=true;
clientsocket1.Socket.SendText('Текст сообщения');
clientsocket1.active:=false;
end;

Если что-то непонятно, пишите в ЛС
Форма ответа