Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Пишу прогу на Delphi7 для работы в локальной сети


Автор: Delphist 2.4.2004, 17:31
Вообщем так предположим,что есть локальная сеть из n компьютеров
1 главный - сервер,n-1 - подчиненых (с операционной системой Windows XP ) и предположим что у нас есть прога project.exe - предположим настраивает биос {что она делает не особо важно суть не в этом}) копия которой хранится на всех компьютеров. А теперь сам вопрос какой код на Delphik'e надо добавить в исходники проги project.exe, чтобы человек сидящий за главным компьютером, запустив файл (программу) project.exe и эта программа умела бы сделать свои функции (в данном случае настройка биоса) с любым из n-1 подчиненных компьютеров точно так же как если бы мы, сели за любой из n-1 подчиненых компьютеров и запустив прогу - project.exe работали с ней (в данном случае настраивали бы биос).
Т.е. суть как заставить работать прогу по локальной сети. Я знаю есть компоненты у Delphik'a DDeServerItem,DDeServerConv,DDeClientItem,DDeClientConv - может быть через них как то можно! Вообщем ребята выручайте - а то сама идея проги есть (т.е. то что она должна делать), но надо, чтобы она работала не только на отдельном компе, но и по локальной сети

Автор: Akella 5.4.2004, 11:16
а можно изменять значения биоса програмно и даже под XP?

Лучше использовать не DDE, а TCP со страницы Internet

А често говоря, вопрос не очень понятен, все очень закручено, как в настроящем дедективе.

Автор: Гость_Vasya 5.4.2004, 20:31
Хошь-нехошь, а будешь писать клиент и сервер по отдельности.

Автор: PILOT 5.4.2004, 21:37
Я еще раз повторюсь, что по-моему БИОС изменить так просто нельзя, иначе бы все вирусы этим пользовались только так...
Для передачи информации по локалке есть компоненты TCPClient и TCPServer которые позволяют общаться по сети как стандартными протоколами (FTP в твоем случае), так и протоколами придуманными самостоятельно.
И в любом случае придется написать и клиента и сервер, и запускать эти программы на всех связываемых компьютерах.

СУВ.

Автор: Delphist 6.4.2004, 15:58
Цитата(PILOTIK @ 5.4.2004, 21:37)
Я еще раз повторюсь, что по-моему БИОС изменить так просто нельзя, иначе бы все вирусы этим пользовались только так...
Для передачи информации по локалке есть компоненты TCPClient и TCPServer...

СУВ.

Что ВЫ все присатли к слово биос, работа с биосом я ж ведь в вопросе указал, что не важно что делает прога суть не в этом, а в том как работать по локалке. Так вот ты пишешь есть TCPClient и TCPServer а как ими пользоваться!


СУВ

Автор: Maverick 6.4.2004, 17:37
Цитата
DDeServerItem,DDeServerConv,DDeClientItem,DDeClientConv

Вот эти компоненты для контроля передачи данных между двумя прогами, запущенными одновременно на одной машине... И это еще не самая простая технология, замучаешься....

Сорри, спешу... отвечаю быстро....
У тебя будет так... на каждой машине будет установлен СЕРВЕР, ожидающий подключения КЛИЕНТА и выполняющий действия в зависимости сообщений, которые получил от КЛИЕНТА.... Данные сервера должны быть запущены постоянно и ждать..... На твоей главной машине будет КЛИЕНТ, который будет соединяться с разными СЕРВЕРАМИ и загонять в них сообщения с тем, чтобы СЕРВЕР его получил и соответствующим способом отработал уже у себя....

Не начинай с TCPClient и TCPServer - это будет пока сложно для тебя, я так думаю.... Возьми пока - ClientSocket и ServerSocket с той же вкладки... пока хватит.... Тестироваться, думаю будешь на одной машине.... Пишешь два приложения - одно тестовый СЕРВЕР, второе тестовый КЛИЕНТ... Кидаешь на каждое соответствующий компонент.... Чтоб на одной машине работать, настраиваешь

ClientSocket.Address =127.0.0.1 (впоследствии требуемый IP-адрес, счас циклический повернутый на себя)
ClientSocket.Port = 7777 (любой Integer, не задень прописанные порты системы, их можно посмотреть в файле .... черт, не помню, где windows\system32\drivers\ посмотрю - скажу)

ServerSocket.Port =7777 (тот же)

Кинь на КЛИЕНТ еще Shape - она будет служить индикатором соединения...

Кидаешь на КЛИЕНТ кнопку... на ее клик вешаешь -
if not ClientSocket1.Active then
ClientSocket1.Open;
//ClientSocket1.Active:=true

На событие OnConnect ClientSocket вешаешь -
Shape1.Brush.Color := clRed;
//то есть при соединении покраснеть....

На СЕРВЕРЕ тожно можно фигурку повесить для контроля - только там ее окрашивать следует в событии OnClientConnect (по-моему, все по памяти пишу... в далекой юности занимался...)


Компелируешь - запускаешь обе одновременно....
Нажимаешь на кнопку в КЛИЕНТЕ для открытия соединения.... Если все нормально - обе фигурки покраснеют.... На обоих приложениях.... Переносим СЕРВЕР на другую машину, прописываем на КЛИЕНТЕ новый Address.... повторяем - должно работать по сети....

У ClientSocket есть метод SendText.... У ServerSocket - событие OnClientWrite.... А в нем параметр ReceiveText... (все-таки пришлось подглядеть...)

Надеюсь понятно - от КЛИЕНТА сообщения отправляются, СЕРВЕРОМ принимаются, обрабатываются.... Остальные навороты продумывай сам....

Ну вот спешил... а расписался....






Добавлено @ 17:41
Ну, конечно, не все так просто.... И количество соеденений обрабатывать надо и ошибки, и настройки в программе менять... и тд и тп.... И методы есть у компонентов у этих, и других более продвинутые.... Но ты хотел просто понять, так? Кстати, те компоненты похожи в обращении... TCPClient и TCPServer....

Автор: oleg1973 6.4.2004, 20:28
хыхы хатите вариант без ТСР ?
делаем на серванте расшареную папку
туда project.exe пишет некий файлик с указаниями какому клиенту че делать
все клиенты сети пасут етот самы файлик и читают с него че им приказвает босс smile.gif
тру ляля smile.gif

Автор: PILOT 6.4.2004, 20:51
Цитата(Delphist @ 6.4.2004, 12:58)
Что ВЫ все присатли к слово биос, работа с биосом я ж ведь в вопросе указал, что не важно что делает прога суть не в этом, а в том как работать по локалке. Так вот ты пишешь есть TCPClient и TCPServer а как ими пользоваться!


СУВ

Во-первых, у тебя в вопросе я заметил привязку к БИОС, извини пожалуйста, что указал тебе на это, может ты и прав был, что указывать я на это не должен был.
Во-вторых, по данному вопросу в данном форуме было достаточно много обсуждений, и можно было бы воспользоваться поиском. Причем не только по форуму.
В-третьих, сделав "во-вторых" я сразу нарвался на ряд статей по твоей тематике:

http://delphi.vov.ru/php/articles/view.php?action=view&id=9
http://delphi.vov.ru/php/articles/view.php?action=view&id=12

СУВ.
ЗЫ. Я конечно все понимаю, но зачем передирать мой "СУВ" smile.gif

Автор: Maverick 7.4.2004, 08:51
Цитата
все клиенты сети пасут етот самы файлик и читают с него че им приказвает босс
тру ляля 


И с какой частотой они должные его пасти? А если изменения надо провести срочно? А они пасут раз в 5 минут?

Автор: p0s0l 7.4.2004, 09:40
Maverick, есть специальная для этого функция ReadDirectoryChangesW - она сама дождётся, когда там появится или изменится файл...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)