| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 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 | ||
Что ВЫ все присатли к слово биос, работа с биосом я ж ведь в вопросе указал, что не важно что делает прога суть не в этом, а в том как работать по локалке. Так вот ты пишешь есть TCPClient и TCPServer а как ими пользоваться! СУВ |
| Автор: Maverick 6.4.2004, 17:37 | ||
Вот эти компоненты для контроля передачи данных между двумя прогами, запущенными одновременно на одной машине... И это еще не самая простая технология, замучаешься.... Сорри, спешу... отвечаю быстро.... У тебя будет так... на каждой машине будет установлен СЕРВЕР, ожидающий подключения КЛИЕНТА и выполняющий действия в зависимости сообщений, которые получил от КЛИЕНТА.... Данные сервера должны быть запущены постоянно и ждать..... На твоей главной машине будет КЛИЕНТ, который будет соединяться с разными СЕРВЕРАМИ и загонять в них сообщения с тем, чтобы СЕРВЕР его получил и соответствующим способом отработал уже у себя.... Не начинай с 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 пишет некий файлик с указаниями какому клиенту че делать все клиенты сети пасут етот самы файлик и читают с него че им приказвает босс тру ляля |
| Автор: PILOT 6.4.2004, 20:51 | ||
Во-первых, у тебя в вопросе я заметил привязку к БИОС, извини пожалуйста, что указал тебе на это, может ты и прав был, что указывать я на это не должен был. Во-вторых, по данному вопросу в данном форуме было достаточно много обсуждений, и можно было бы воспользоваться поиском. Причем не только по форуму. В-третьих, сделав "во-вторых" я сразу нарвался на ряд статей по твоей тематике: http://delphi.vov.ru/php/articles/view.php?action=view&id=9 http://delphi.vov.ru/php/articles/view.php?action=view&id=12 СУВ. ЗЫ. Я конечно все понимаю, но зачем передирать мой "СУВ" |
| Автор: Maverick 7.4.2004, 08:51 | ||
И с какой частотой они должные его пасти? А если изменения надо провести срочно? А они пасут раз в 5 минут? |
| Автор: p0s0l 7.4.2004, 09:40 |
| Maverick, есть специальная для этого функция ReadDirectoryChangesW - она сама дождётся, когда там появится или изменится файл... |