Ping Delphi Пример

  1. Пример Заявления
  2. Аннотация Пример
  3. Ping Delphi Примеры
  • Apr 8, 2004 - ping + Delphi / Delphi / Привет всем. Можэт кто-то делал пинг хоста из Delphi? Я знаю, что есть. Пример на synapse uses pingsend; var.
  • 2007-2-4  Вот ещё один пример. Надо использовать компонент IdIcmpClient. Этот включает метод Ping, который осуществляет запрос.

Был порадован массой готовых решений для Delphi. Остановился на Вот мой небольшой пример Цифры здесь.

Для следующего примера нам придется расширить возможности Delphi. Те компоненты, которые доступны на палитре - это только основа. Вы можете расширять их количество и качество по своему усмотрению. Для этого в сети Интернет полно библиотек компонентов, написанных такими как вы, которые можно подключать к Delphi. Среди них есть платные, а есть и бесплатные, которые по качеству не отличаются даже от родных, написанных в Borland. Сейчас мы напишем собственную утилиту Ping. Для ее написания нам понадобится очень сильная и бесплатная библиотека Internet Component Suite (ICS).

Ее вы можете найти по адресу Шp.//mm.rtШie/f^iie/Ышà±Ш или на компакт-диске к книге в директории Скопируйте файлы себе на диск, например в C: components, разархивируйте их - скоро они вам пригодятся. Теперь запустите Delphi. Как всегда, при запуске будет создан новый проект. Он нам пока не нужен, поэтому закройте его (Ffle Close All). Теперь нужно открыть с помощью Delphi библиотеку, которую вы скачали из сети или взяли на компакт-диске.

Файл, который надо открыть, называется IcsdelXX.dpk, где XX - номер версии установленного у вас Delphi. Если у вас стоит Delphi 6 или Delphi 7, то можно открыть IcsdelSO.dpk. В библиотеке нет файлов для этих версий, но 5-й установится без проблем.

• Устранять возникшие по время работы на линии неисправности автомобиля. Должностная инструкция водителя грузового автомобиля категории е. • Сдавать автомобиль и ставить его на отведенное место по возвращении с работы на завод. • Производить текущий ремонт автомобиля, проводить ежедневное обслуживание, первое и второе техническое обслуживание, готовить автомобиль к техническому осмотру.

Окно библиотеки компонентов Когда вы откроете библиотеку, перед вами появится окно, как на рис. В этом окне нажмите кнопку Install, чтобы Delphi откомпилировал пакет и проинсталлировал его. Если вы все сделали правильно, то должно появиться окно с перечислением новых установленных компонентов (рис. SrrtpProt.TSyncSmtpCli, TnCnx.TTnCnx, TnEmJvt.TTnEmOlVT TnScript,TTfiScr^t Wait.TWait, WSocket.TWSocket, WSocketS.TWSocketServer;:.:.

1. Установка завершена Теперь нужно указать Delphi, где находятся файлы пакета, чтобы он мог при компиляции проектов найти все необходимое. Для этого выберите в меню Tools пункт Environment Options. Перед вами появится окно настроек Delphi. Перейдите на вкладку Library (рис. Настройка Delphi Щелкните на кнопке с тремя точками напротив строки Library path, и вы увидите окно, как на рис.

Внизу окна есть строка ввода. Введите туда путь к директории, куда вы разархивировали пакет (у меня это C: components Delphi Vc32). Нажмите кнопку Add. Теперь можно закрывать все открытые окна, нажимая многочисленные ОК. Добавление директории пакетов На палитре компонентов появилась новая закладка FPiette. Все компоненты этой библиотеки очень быстрые и достаточно хорошие.

Единственный обнаруженный мной недостаток - глючит компонент ftpclient. Я отправлял письмо разработчику с описанием ошибки и ее исправлением еще год назад (теперь уже больше), но 'воз и ныне там'.

А в остальном все работает отлично. Закладка FPiatte Все необходимые компоненты установлены, так что теперь переходим к программированию. Опять закройте все окна, и на вопросы о сохранении изменений в пакете отвечайте Да. Создайте новый проект. Перенесите на форму два компонента TLabel и два TEdit. Разместите их так, как показано нарис.

У Label 1 измените СКЙЖ) Caption на Им. компьютера, а у Label2 - на Размер пакета.

Напротив Label! Должен стоять Editl. Сюда вы будете вводить IP-адрес или имя компьютера, который надо пропинговать. В Edit2 будем вводить размер пакета. Еще не помешает перенести на форму компонент RichEdit с закладки Win32. В него мы будем записывать результат выполнения операции. И наконец, разместите на форме компонент Ping с закладки FPiette, который и будет производить пинг (рис.

Форма будущей программы Рис. Свойства компонента Ping Все, форма готова. Осталось только написать код, которого не так уж и много. Создайте обработчик события onclick кнопки. Там нужно написать следующее: procedure TPingForm.ButtonlClick(Sender: TObject);beginRichEditl.

Add (■ Поиск- ■. + EHitl.Text + ' ' ); Pingl.Size:=StrToInt(Edit2.Tent);Pingl.DnsLookup(Editl.Text);end; Здесь первой строкой через компонент RichEdit выводится сообщение о начале пинга. Вторая строка устанавливает размер пакета пинга (pingl. Size), как указано в Edit2.

• и других • PrintHelp PrintHelp — условно бесплатная программа. Однако, несколько модлей Epson программа позволяет сбросить бесплатно, в том числе и L800, с которой Adjustment Program не дружит, по непонятным причинам. • Физическое заполнение памперса Обычно счётчик заполнения памперса срабатывает куда раньше, чем ёмкость с отработкой действительно физически заполнится. Из бесплатно обнуляемых программой устройств наиболее популярные: L800, L100, L200, Stylus 1410, T50, P50. Для обнуления счётчика памперса для большинства моделей принтеров придётся купить у разработчиков код сброса. Программа для обнуления epson t50.

Последняя строка запускает поиск компьютера через DNS (Pingl.DnsLookup). Даже если вы введете IP-адрес, поиск в базе DNS ничего плохого не сделает.

Теперь выделите компонент Pingl и создайте для него обработчик события OnDnsLookupDone (когда закончен поиск в базе DNS). Здесь напишите следующее: procedure TPingForm.PinglDnsLookupDone (Sender: TObject;Error: Word);begin//Если произошла ошибка,. If Error ' 0 then begin//Вывести сообщение об ошибки RichEdit 1. Add ('Хост не найден.' . + Editl.Text + '); //Выход Expend;//Если ошибок не было, то выводим в RichEdit1 результат поиска RichEditl.Lines.Add('Хост ' + Editl.Text + ' - ' + Pingl.DnsResult); //Устанавливаем свойство Address компонента Ping равным //адресу, найденному в базе DNS Pingl.Address:= Pingl.DnsResult;//Запускаем Ping Pingl.Ping;end; Чтобы легче было разобраться с его содержимым, я снабдил листинг комментариями.

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

Для этого создайте обработчик события OnEchoReply для компонента Pingi: procedure TPingForm.PinglEchoReplyiSender, Icmp: TObject;Error: Integer);beginif Error = 0 thenRichEdit!Lines.Add(1 He могу выполнить операцию ping: ' + Pingl.ErrorString)elseRichEditl, Lines. Add ('Получено ' + IntToStr (Pingl. DataSize) +. ' байт от '+Pingl.HostIP+' за ' + IntToSrr(Pingl.Reply.RTT)+ ' миллисекунд');end; Здесь выводится результат пинга. Если Error равно о, то показывается сообщение об ошибке.

Если нет, то показывается время, за которое прошел ping. И напоследок проведем косметическую операцию. Создайте обработчик события OnEchoRequest для компонента Pingl. В нем напишите следующее: procedure TPingForm. PinglEchoRequest (Sender, Icmp: TObject); beginRichEditl.Lines.Add('Посылка ' + IntToStr(Pingl.Size) + ' байтов на ' + Pingl.HostName);end; Это чисто косметическая поправка, которая вводит состояние пинга. Событие OnEchoRequest происходит тогда, когда пакет отправляется на удаленную машину.

Это событие вылавливается и выводится сообщение о том, что сейчас отправляются данные в определенном размере на машину с ным адресом. Так информация будет лучше восприниматься, и с ней легче будет работать. Результат работы утилиты Pinq Теперь в вашем арсенале появилась еще одна утилита собственного изготовления, которая обязательно должна присутствовать у любого компьютерщика, хоть как-то связанного с сетью.

Для чего нужен иинг? Часто возникает вопрос: 'Как узнать IP-адрес сервера?' Самый простой способ сделать это - ping. Просто пингуешь символьное имя сервера, а ваша утилита сразу показывает вам его IP-адрес.

На компакт-диске в директории Примеры Глава 4 Ping вы можете увидеть пример этой программы и цветные рисунки этого раздела. В примере, доступном на компакт-диске, я добавил несколько дополнительных возможностей, которые не были описаны. Возможности простые, и вы сами сможете разобраться с их работой.

В примере на диске добавлено: □ TimeOut - возможность изменения времени ожидания ответа на пакет; О ttl - время жизни пакета. Это максимальное количество маршрутизаторов, через которые может пройти пакет. Если пакет проходит через большее количество маршрутизирующих устройств, чем указано в этом поле, то он считается заблудившимся или зациклившимся и уничтожается. Это сделано для того, чтобы зацикленные пакеты не гуляли по сети вечно.

Delphi

Первоначально этот пост задумывался как статья про работу с датчиком местоположения в Android, но по мере написания текста оказалось, что здесь собраны несколько моментов по взаимодействию с Android в Delphi XE5, которые не столь очевидны как, например, определение широты/долготы при использовании готового или получение списка всех доступных датчиков в устройстве, однако могут быть полезны при работе над проектом. Поэтому я и решил сменить название и представить вам несколько, на мой взгляд, полезных примеров по работе с Android, которые были частично написаны мной, а частично, собраны из разных уголков в Сети. Вполне возможно, что какая-то часть примеров может оказаться полезной и для участников конкурса мобильных приложений на Delphi. Как получить список доступных поставщиков местоположения устройства? В Android координаты местоположения (широта/долгота) могут определяться следующими способами.

Пример Заявления

С использованием служб Google для определения координат по Wi-fi и мобильным сетям. С использованием данных со спутников GPS. В Delphi — с использованием Настройка сервиса определения местоположения в Android выглядит следующим образом: Чтобы определить поставщиков местоположения (gps, сеть и т.д.) необходимо получить доступ к и запросить список поставщиков, используя методы.

Delphi

Первый метод вернет перечень всех поставщиков. Второй — только доступных для использования. Пример получения всех провайдеров выглядит следующим образом.

Android, Androidapi. Location, Androidapi.

JNIBridge, Androidapi. GraphicsContentViewText, Androidapi. Var LocManagerObj: JObject; LocationManager: JLocationManager; AllProviders: JList; I: Integer; begin //запрашиваем сервис Location LocManagerObj: =SharedActivityContext. GetSystemService (TJContext. LOCATIONSERVICE ); if not Assigned (LocManagerObj ) then raise Exception. Create ( 'Could not locate Location Service' ); //получаем LocationManager LocationManager: =TJLocationManager. Wrap ( (LocManagerObj as ILocalObject ).

GetObjectID ); if not Assigned (LocationManager ) then raise Exception. Create ( 'Could not access Location Manager' ); //запрашиваем список всех провайдеров AllProviders: =LocationManager.

GetAllProviders; //выводим список if Assigned (AllProviders ) then begin for I: = 0 to AllProviders. Size - 1 do Memo1.

Add (JStringToString (AllProviders. ToString ) ); end; end; uses FMX.Helpers.Android, Androidapi.JNI.Location, Androidapi.JNIBridge, Androidapi.JNI.GraphicsContentViewText, Androidapi.JNI.JavaTypes. Var LocManagerObj: JObject; LocationManager: JLocationManager; LastLocation: JLocation; Geocoder: JGeocoder; Address: JAddress; AddressList: JList; begin //запрашиваем сервис Location LocManagerObj: =SharedActivityContext. GetSystemService (TJContext. LOCATIONSERVICE ); if not Assigned (LocManagerObj ) then raise Exception.

Create ( 'Could not locate Location Service' ); //получаем LocationManager LocationManager: =TJLocationManager. Wrap ( (LocManagerObj as ILocalObject ). GetObjectID ); if not Assigned (LocationManager ) then raise Exception.

Create ( 'Could not access Location Manager' ); //получаем последнее местоположение зафиксированное с помощью координат wi-fi и мобильных сетей LastLocation: =LocationManager. GetLastKnownLocation (TJLocationManager. NETWORKPROVIDER ); if Assigned (LastLocation ) then begin geocoder: = TJGeocoder. Init (SharedActivityContext ); if not Assigned (geocoder ) then raise Exception.

Create ( 'Could not access Geocoder' ); //пробуем определить 1 возможный адрес местоположения AddressList: =geocoder. GetFromLocation (LastLocation. GetLatitude, LastLocation. GetLongitude, 1 ); if AddressList. Size> 0 then begin Address: =TJAddress. Wrap ( (AddressList.

Get ( 0 ) as ILocalObject ). GetObjectID ); if not Assigned (Address ) then raise Exception. Create ( 'Could not access Address' ); //выводим данные в memo Memo1. Add ( 'City: ' +JStringToString (Address. GetAddressLine ( 1 ) ) ); Memo1.

Add ( 'Street: ' +JStringToString (Address. GetAddressLine ( 0 ) ) ); Memo1. Add ( 'PostalCode: ' +JStringToString (Address. Var Intent: JIntent; begin Intent: = TJIntent. Create; Intent. SetAction (TJIntent.

ACTIONVIEW ); Intent. SetData (StrToJURI ( ') ); SharedActivity. StartActivity (Intent ); end; var Intent: JIntent; begin Intent:= TJIntent.Create; Intent.setAction(TJIntent.JavaClass.ACTIONVIEW); Intent.setData(StrToJURI('SharedActivity.startActivity(Intent); end; И в заключении, на мой взгляд, довольно интересный пост в Google+ от нашего зарубежного коллеги о том. По мере возможностей буду этот список примеров расширять, так что, как говориться — оставайтесь с нами:) Книжная полка. Так я даже, вроде бы и сказал куда надо сходить за примерами:) Первоначально этот пост задумывался как статья про работу с датчиком местоположения в Android, но по мере написания текста оказалось, что здесь собраны несколько моментов по взаимодействию с Android в Delphi XE5, которые не столь очевидны как, например, определение широты/долготы при использовании готового компонента TLocationSensor. Пример использования готовых классов в Delphi XE5 вы можете изучить на сайте Embarcadero — здесь. Кстати, по поводу приведенной выше ссылки на пример с Embarcadero — классный пример.

В JNI я полез после того как не смог найти навскидку проверки подключения по wi-fi или мобильному инету. Про JNI можно на Хабре глянуть хотя бы даже и (правда относительно С) А по поводу пример №1 (про поставщиков сведений). Наверное можно и с использованием стандартного компонента такие сведения вытянуть, но, по-моему использовать для этого напрямую Location Service проще и быстрее. LocManagerObj:=SharedActivityContext.getSystemService(TJContext.JavaClass.LOCATIONSERVICE); LocationManager:=TJLocationManager.Wrap((LocManagerObj as ILocalObject).GetObjectID); LastLocation:=LocationManager.getLastKnownLocation(TJLocationManager.JavaClass.GPSPROVIDER); memo1.Lines.Add(‘lat=’+floattostr(Lastlocation.getLatitude)); memo1.Lines.Add(‘lon=’+floattostr(Lastlocation.getLongitude)); Андроид выдает ошибку «Access Violation at address 42AA2F4E.» GPS датчик влючен!!! Или я неправильно сделал?? Access Violation at address.

Аннотация Пример

Вываливается, потому что LastLocation не определяется. Просто ваш GPS-датчик на момент запроса ещё ничего не «поймал» со спутника и, следовательно, возвращает nil — в точности с документацией по Android. Включил на своем смарте только GPS — координаты не вернул ни код выше, ни компонент TLocationManager из состава Delphi. Накидал небольшую демку — завтра попробую её запустить под открытым небом — о результатах отпишусь:) Update: не пришлось даже выходить на улицу. Код работает нормально, НО получение координат с GPS надо ждать долго (во всяком случае дольше, чем от других провайдеров) + желательно ждать по ближе к оконным проемам. Ради эксперимента можете поставить себе вот эту программку и посмотреть сколько у вас будет крутиться надпись «Поиск местоположения GPS». У меня, когда я сижу за компом далеко от окна — надпись висит бесконечно долго, а когда подходу к окну, то примерно в течение 1 минуты определяется местоположение и код Delphi начинает работать.

Ping Delphi Примеры

Как узнать имеется ли доступ в интернет НЕ РАБОЧИЙ!!! Буржуйский автор вставил какой-то модуль Misc, но это пол беды и без него компилится. При вызове любой из ф-ций программа зависает. Где-то в дебрях кода выполнение уходит в бесконечный цикл по ассемблерным инструкциям. Vlad вы же программист! Бросьте эти блогерские повадки накопипастить материала не заботясь о его содержании. К тому же dfit Ctrl+C — Ctrl+V вас подвели: ваша строка: TJNetworkInfo = class(TJavaGenericImport) end; строка автора TJNetworkInfo = class(TJavaGenericImport) end; Хорошо хоть ссылку на оригинал привели.