{"id":1147,"date":"2010-03-02T19:30:51","date_gmt":"2010-03-02T18:30:51","guid":{"rendered":"http:\/\/blogs.wittwer.fr\/whiler\/?p=1147"},"modified":"2023-03-12T15:04:45","modified_gmt":"2023-03-12T14:04:45","slug":"connection-logger-updated","status":"publish","type":"post","link":"https:\/\/blogs.wittwer.fr\/whiler\/2010\/03\/02\/connection-logger-updated\/","title":{"rendered":"Mise \u00e0 jour du service de test de connexion"},"content":{"rendered":"<p>Apr\u00e8s l&rsquo;avoir laisser tourner un peu plus de 24 heures, j&rsquo;ai mis \u00e0 jour le <a href=\"\/whiler\/2010\/03\/01\/log-coupures-web\/\">code du service pour contr\u00f4ler ma connexion internet<\/a>&#8230;<\/p>\n<p>Cependant, voici le r\u00e9sultat rapidement obtenu avec les donn\u00e9es r\u00e9colt\u00e9es&nbsp;:<br \/>\n<div id=\"attachment_1150\" style=\"width: 310px\" class=\"wp-caption aligncenter\"><a title=\"D\u00e9synchronisations\" href=\"\/whiler\/wp-content\/uploads\/2010\/03\/dispo.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-1150\" src=\"\/whiler\/wp-content\/uploads\/2010\/03\/dispo-300x119.jpg\" alt=\"Disponibilit\u00e9\" title=\"Cliquer pour agrandir\" width=\"300\" height=\"119\" class=\"size-medium wp-image-1150\" srcset=\"https:\/\/blogs.wittwer.fr\/whiler\/wp-content\/uploads\/2010\/03\/dispo-300x119.jpg 300w, https:\/\/blogs.wittwer.fr\/whiler\/wp-content\/uploads\/2010\/03\/dispo.jpg 705w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><p id=\"caption-attachment-1150\" class=\"wp-caption-text\">D\u00e9synchronisations<\/p><\/div><br \/>\nSi je n&rsquo;avais pas de probl\u00e8me de connexion, nous verrions un rectangle plein&#8230; les zones blanches correspondent \u00e0 des pertes de synchronisation, et donc des coupures web&#8230; <img src=\"https:\/\/blogs.wittwer.fr\/whiler\/wp-includes\/images\/smilies\/skype\/\/cry.gif\" alt=\";(\" class=\"wp-smiley\" style=\"height: 1em; max-height: 1em;\" \/> <\/p>\n<p>Dans cette nouvelle version, j&rsquo;ai modifi\u00e9 les choses suivantes&nbsp;:<\/p>\n<ul>\n<li>T\u00e9l\u00e9chargement d&rsquo;un bout de page HTML&#8230; en effet, le ping en suffisait pas \u00e0 faire tomber la connexion&nbsp;!<\/li>\n<li>Stockage de la premi\u00e8re et derni\u00e8re valeur.. Excel a du mal avec trop de valeurs&#8230;<\/li>\n<li>Ajout \u00e9galement de la date au format Unix&#8230; Toujours pour Excel, il me propose une plage minimale d&rsquo;une journ\u00e9e.. donc, j&rsquo;ai mis un num\u00e9rique<\/li>\n<li>Calcul syst\u00e9matique du nom de fichier pour changer de fichier de log \u00e0 chaque nouvelle journ\u00e9e<\/li>\n<\/ul>\n<p>Voici le code actualis\u00e9&nbsp;:<!--more--><\/p>\n<div class=\"codecolorer-container delphi dawn\" style=\"overflow:auto;white-space:nowrap;width:480px;height:300px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/>11<br \/>12<br \/>13<br \/>14<br \/>15<br \/>16<br \/>17<br \/>18<br \/>19<br \/>20<br \/>21<br \/>22<br \/>23<br \/>24<br \/>25<br \/>26<br \/>27<br \/>28<br \/>29<br \/>30<br \/>31<br \/>32<br \/>33<br \/>34<br \/>35<br \/>36<br \/>37<br \/>38<br \/>39<br \/>40<br \/>41<br \/>42<br \/>43<br \/>44<br \/>45<br \/>46<br \/>47<br \/>48<br \/>49<br \/>50<br \/>51<br \/>52<br \/>53<br \/>54<br \/>55<br \/>56<br \/>57<br \/>58<br \/>59<br \/>60<br \/>61<br \/>62<br \/>63<br \/>64<br \/>65<br \/>66<br \/>67<br \/>68<br \/>69<br \/>70<br \/>71<br \/>72<br \/>73<br \/>74<br \/>75<br \/>76<br \/>77<br \/>78<br \/>79<br \/>80<br \/>81<br \/>82<br \/>83<br \/>84<br \/>85<br \/>86<br \/>87<br \/>88<br \/>89<br \/>90<br \/>91<br \/>92<br \/>93<br \/>94<br \/>95<br \/>96<br \/>97<br \/>98<br \/>99<br \/>100<br \/>101<br \/>102<br \/>103<br \/>104<br \/>105<br \/>106<br \/>107<br \/>108<br \/>109<br \/>110<br \/>111<br \/>112<br \/>113<br \/>114<br \/>115<br \/>116<br \/>117<br \/>118<br \/>119<br \/>120<br \/>121<br \/>122<br \/>123<br \/>124<br \/>125<br \/>126<br \/>127<br \/>128<br \/>129<br \/>130<br \/>131<br \/>132<br \/>133<br \/>134<br \/>135<br \/>136<br \/>137<br \/>138<br \/>139<br \/>140<br \/>141<br \/>142<br \/>143<br \/>144<br \/>145<br \/>146<br \/>147<br \/>148<br \/>149<br \/>150<br \/>151<br \/>152<br \/>153<br \/>154<br \/>155<br \/>156<br \/>157<br \/>158<br \/>159<br \/>160<br \/>161<br \/>162<br \/>163<br \/>164<br \/>165<br \/>166<br \/>167<br \/>168<br \/>169<br \/>170<br \/>171<br \/>172<br \/>173<br \/>174<br \/>175<br \/>176<br \/>177<br \/>178<br \/>179<br \/>180<br \/>181<br \/>182<br \/>183<br \/>184<br \/>185<br \/>186<br \/>187<br \/>188<br \/>189<br \/>190<br \/>191<br \/><\/div><\/td><td><div class=\"delphi codecolorer\"><span class=\"kw1\">unit<\/span> main<span class=\"sy1\">;<\/span><br \/>\n<br \/>\n<span class=\"kw1\">interface<\/span><br \/>\n<br \/>\n<span class=\"kw1\">uses<\/span><br \/>\n&nbsp; Windows<span class=\"sy1\">,<\/span> Messages<span class=\"sy1\">,<\/span> SysUtils<span class=\"sy1\">,<\/span> Classes<span class=\"sy1\">,<\/span> Graphics<span class=\"sy1\">,<\/span> Controls<span class=\"sy1\">,<\/span> SvcMgr<span class=\"sy1\">,<\/span> Dialogs<span class=\"sy1\">,<\/span><br \/>\n&nbsp; ExtCtrls<span class=\"sy1\">,<\/span> IdBaseComponent<span class=\"sy1\">,<\/span> IdComponent<span class=\"sy1\">,<\/span> IdRawBase<span class=\"sy1\">,<\/span> IdRawClient<span class=\"sy1\">,<\/span> IdIcmpClient<span class=\"sy1\">,<\/span><br \/>\n&nbsp; StrUtils<span class=\"sy1\">,<\/span> DateUtils<span class=\"sy1\">,<\/span> WinInet<span class=\"sy1\">;<\/span><br \/>\n<br \/>\n<span class=\"kw1\">const<\/span><br \/>\n&nbsp; LONG_INTERVAL &nbsp;<span class=\"sy3\">=<\/span> <span class=\"nu0\">180000<\/span><span class=\"sy1\">;<\/span> <span class=\"co1\">\/\/ toutes les 3mn<\/span><br \/>\n&nbsp; SHORT_INTERVAL <span class=\"sy3\">=<\/span> &nbsp;<span class=\"nu0\">15000<\/span><span class=\"sy1\">;<\/span> <span class=\"co1\">\/\/ toutes les 15s<\/span><br \/>\n&nbsp; SHORT_RETRY &nbsp; &nbsp;<span class=\"sy3\">=<\/span> &nbsp; &nbsp; <span class=\"nu0\">50<\/span><span class=\"sy1\">;<\/span> <span class=\"co1\">\/\/ 50 essaies rapides apr\u00e8s un plantage<\/span><br \/>\n<br \/>\n&nbsp; SUCCESS <span class=\"sy3\">=<\/span> <span class=\"nu0\">1<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; FAILURE <span class=\"sy3\">=<\/span> <span class=\"nu0\">0<\/span><span class=\"sy1\">;<\/span><br \/>\n<br \/>\n<span class=\"kw1\">type<\/span><br \/>\n&nbsp; TConnectionLoggerService <span class=\"sy3\">=<\/span> <span class=\"kw1\">class<\/span><span class=\"br0\">&#40;<\/span>TService<span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; tmrCheck<span class=\"sy1\">:<\/span> TTimer<span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; idcmpclntPinger<span class=\"sy1\">:<\/span> TIdIcmpClient<span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">procedure<\/span> ServiceExecute<span class=\"br0\">&#40;<\/span>Sender<span class=\"sy1\">:<\/span> TService<span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">procedure<\/span> tmrCheckTimer<span class=\"br0\">&#40;<\/span>Sender<span class=\"sy1\">:<\/span> <span class=\"kw4\">TObject<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">procedure<\/span> ServicePause<span class=\"br0\">&#40;<\/span>Sender<span class=\"sy1\">:<\/span> TService<span class=\"sy1\">;<\/span> <span class=\"kw1\">var<\/span> Paused<span class=\"sy1\">:<\/span> <span class=\"kw4\">Boolean<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">procedure<\/span> ServiceContinue<span class=\"br0\">&#40;<\/span>Sender<span class=\"sy1\">:<\/span> TService<span class=\"sy1\">;<\/span> <span class=\"kw1\">var<\/span> Continued<span class=\"sy1\">:<\/span> <span class=\"kw4\">Boolean<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; <span class=\"kw1\">private<\/span><br \/>\n&nbsp; &nbsp; <span class=\"coMULTI\">{ D\u00e9clarations priv\u00e9es }<\/span><br \/>\n&nbsp; &nbsp; iLastValue<span class=\"sy1\">:<\/span> <span class=\"kw4\">Integer<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; dtLastOtherValue<span class=\"sy1\">:<\/span> <span class=\"kw4\">TDateTime<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; iSpeedRetry<span class=\"sy1\">:<\/span> <span class=\"kw4\">Integer<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; fPointer<span class=\"sy1\">:<\/span> &nbsp; &nbsp;<span class=\"kw4\">TextFile<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">procedure<\/span> WriteIt<span class=\"br0\">&#40;<\/span>sToWrite<span class=\"sy1\">:<\/span> <span class=\"kw4\">string<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">function<\/span> &nbsp;Ping<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">:<\/span> <span class=\"kw4\">SmallInt<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">function<\/span> &nbsp;AddLeadingZeroes<span class=\"br0\">&#40;<\/span><span class=\"kw1\">const<\/span> iNumber<span class=\"sy1\">:<\/span> <span class=\"kw4\">Integer<\/span><span class=\"sy1\">;<\/span> iLength<span class=\"sy1\">:<\/span> <span class=\"kw4\">Integer<\/span> <span class=\"sy3\">=<\/span> <span class=\"nu0\">2<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">:<\/span> <span class=\"kw4\">string<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">function<\/span> &nbsp;CheckIt<span class=\"sy1\">:<\/span> <span class=\"kw4\">SmallInt<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">function<\/span> &nbsp;FakeDownload<span class=\"sy1\">:<\/span> <span class=\"kw4\">SmallInt<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; <span class=\"kw1\">public<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">function<\/span> GetServiceController<span class=\"sy1\">:<\/span> TServiceController<span class=\"sy1\">;<\/span> <span class=\"kw1\">override<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"coMULTI\">{ D\u00e9clarations publiques }<\/span><br \/>\n&nbsp; <span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n<br \/>\n<span class=\"kw1\">var<\/span><br \/>\n&nbsp; ConnectionLoggerService<span class=\"sy1\">:<\/span> TConnectionLoggerService<span class=\"sy1\">;<\/span><br \/>\n<br \/>\n<span class=\"kw1\">implementation<\/span><br \/>\n<br \/>\n<span class=\"co2\">{$R *.DFM}<\/span><br \/>\n<br \/>\n<span class=\"kw1\">procedure<\/span> ServiceController<span class=\"br0\">&#40;<\/span>CtrlCode<span class=\"sy1\">:<\/span> <span class=\"kw4\">DWord<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span> <span class=\"kw1\">stdcall<\/span><span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">begin<\/span><br \/>\n&nbsp; ConnectionLoggerService<span class=\"sy1\">.<\/span><span class=\"me1\">Controller<\/span><span class=\"br0\">&#40;<\/span>CtrlCode<span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n<br \/>\n<span class=\"kw1\">function<\/span> TConnectionLoggerService<span class=\"sy1\">.<\/span><span class=\"me1\">AddLeadingZeroes<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw1\">const<\/span> iNumber<span class=\"sy1\">:<\/span> <span class=\"kw4\">Integer<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; iLength<span class=\"sy1\">:<\/span> <span class=\"kw4\">Integer<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">:<\/span> <span class=\"kw4\">string<\/span><span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">begin<\/span><br \/>\n&nbsp; Result <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> SysUtils<span class=\"sy1\">.<\/span><span class=\"kw3\">Format<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'%.*d'<\/span><span class=\"sy1\">,<\/span> <span class=\"br0\">&#91;<\/span>iLength<span class=\"sy1\">,<\/span> iNumber<span class=\"br0\">&#93;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n<br \/>\n<span class=\"kw1\">function<\/span> TConnectionLoggerService<span class=\"sy1\">.<\/span><span class=\"me1\">CheckIt<\/span><span class=\"sy1\">:<\/span> <span class=\"kw4\">SmallInt<\/span><span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">begin<\/span><br \/>\n&nbsp; <span class=\"co1\">\/\/ T\u00e9l\u00e9chargement d'un bout de page ET ping du serveur<\/span><br \/>\n&nbsp; Result <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> <span class=\"br0\">&#40;<\/span>FakeDownload <span class=\"sy3\">+<\/span> Ping<span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span>Result <span class=\"sy3\">=<\/span> <span class=\"nu0\">2<\/span><span class=\"br0\">&#41;<\/span> <span class=\"kw1\">then<\/span><br \/>\n&nbsp; <span class=\"kw1\">begin<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw3\">Dec<\/span><span class=\"br0\">&#40;<\/span>iSpeedRetry<span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span>iSpeedRetry <span class=\"sy3\">=<\/span> <span class=\"nu0\">0<\/span><span class=\"br0\">&#41;<\/span> <span class=\"kw1\">then<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">begin<\/span><br \/>\n&nbsp; &nbsp; &nbsp; tmrCheck<span class=\"sy1\">.<\/span><span class=\"me1\">Interval<\/span> <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> LONG_INTERVAL<span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; <span class=\"kw1\">end<\/span><br \/>\n&nbsp; <span class=\"kw1\">else<\/span><br \/>\n&nbsp; <span class=\"kw1\">begin<\/span><br \/>\n&nbsp; &nbsp; iSpeedRetry &nbsp; &nbsp; &nbsp; <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> SHORT_RETRY<span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; tmrCheck<span class=\"sy1\">.<\/span><span class=\"me1\">Interval<\/span> <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> SHORT_INTERVAL<span class=\"sy1\">;<\/span><br \/>\n&nbsp; <span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; <span class=\"co1\">\/\/ On n'\u00e9crit dans les logs que si le r\u00e9sultat change<\/span><br \/>\n&nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span>iLastValue &lt;&gt; Result<span class=\"br0\">&#41;<\/span> <span class=\"kw1\">then<\/span><br \/>\n&nbsp; <span class=\"kw1\">begin<\/span><br \/>\n&nbsp; &nbsp; <span class=\"co1\">\/\/ On ne stocke pas en double la premi\u00e8re valeur<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span>iLastValue &lt;&gt; <span class=\"sy3\">-<\/span><span class=\"nu0\">1<\/span><span class=\"br0\">&#41;<\/span> <span class=\"kw1\">then<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">begin<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"co1\">\/\/ Derni\u00e8re pr\u00e9c\u00e9dente valeur<\/span><br \/>\n&nbsp; &nbsp; &nbsp; WriteIt<span class=\"br0\">&#40;<\/span><span class=\"kw3\">DateTimeToStr<\/span><span class=\"br0\">&#40;<\/span>dtLastOtherValue<span class=\"br0\">&#41;<\/span> <span class=\"sy3\">+<\/span> <span class=\"st0\">';'<\/span> <span class=\"sy3\">+<\/span> <span class=\"kw3\">IntToStr<\/span><span class=\"br0\">&#40;<\/span>DateTimeToUnix<span class=\"br0\">&#40;<\/span>dtLastOtherValue<span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy3\">+<\/span> <span class=\"st0\">';'<\/span> <span class=\"sy3\">+<\/span> IfThen<span class=\"br0\">&#40;<\/span>iLastValue <span class=\"sy3\">=<\/span> <span class=\"nu0\">2<\/span><span class=\"sy1\">,<\/span> <span class=\"st0\">'1'<\/span><span class=\"sy1\">,<\/span> <span class=\"st0\">'0'<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"co1\">\/\/ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Caption &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Time Unix Format &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;1=Ok ; 0=tomb\u00e9<\/span><br \/>\n&nbsp; &nbsp; WriteIt<span class=\"br0\">&#40;<\/span><span class=\"kw3\">DateTimeToStr<\/span><span class=\"br0\">&#40;<\/span>Now<span class=\"br0\">&#41;<\/span> <span class=\"sy3\">+<\/span> <span class=\"st0\">';'<\/span> <span class=\"sy3\">+<\/span> <span class=\"kw3\">IntToStr<\/span><span class=\"br0\">&#40;<\/span>DateTimeToUnix<span class=\"br0\">&#40;<\/span>Now<span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy3\">+<\/span> <span class=\"st0\">';'<\/span> <span class=\"sy3\">+<\/span> IfThen<span class=\"br0\">&#40;<\/span>Result <span class=\"sy3\">=<\/span> <span class=\"nu0\">2<\/span><span class=\"sy1\">,<\/span> <span class=\"st0\">'1'<\/span><span class=\"sy1\">,<\/span> <span class=\"st0\">'0'<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; iLastValue <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> Result<span class=\"sy1\">;<\/span><br \/>\n&nbsp; <span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; dtLastOtherValue <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> Now<span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n<br \/>\n<span class=\"kw1\">function<\/span> TConnectionLoggerService<span class=\"sy1\">.<\/span><span class=\"me1\">FakeDownload<\/span><span class=\"sy1\">:<\/span> <span class=\"kw4\">SmallInt<\/span><span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">var<\/span><br \/>\n&nbsp; hSession<span class=\"sy1\">,<\/span> hURL<span class=\"sy1\">:<\/span> HInternet<span class=\"sy1\">;<\/span><br \/>\n&nbsp; Buffer<span class=\"sy1\">:<\/span> <span class=\"kw1\">array<\/span><span class=\"br0\">&#91;<\/span><span class=\"nu0\">1<\/span><span class=\"sy1\">..<\/span><span class=\"nu0\">1024<\/span><span class=\"br0\">&#93;<\/span> <span class=\"kw1\">of<\/span> <span class=\"kw4\">Byte<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; BufferLen<span class=\"sy1\">:<\/span> <span class=\"kw4\">DWORD<\/span><span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">begin<\/span><br \/>\n&nbsp; Result <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> FAILURE<span class=\"sy1\">;<\/span><br \/>\n&nbsp; hSession <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> InternetOpen<span class=\"br0\">&#40;<\/span><span class=\"kw4\">PChar<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw3\">ExtractFileName<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw3\">ParamStr<\/span><span class=\"br0\">&#40;<\/span><span class=\"nu0\">0<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">,<\/span> INTERNET_OPEN_TYPE_PRECONFIG<span class=\"sy1\">,<\/span> <span class=\"kw1\">nil<\/span><span class=\"sy1\">,<\/span> <span class=\"kw1\">nil<\/span><span class=\"sy1\">,<\/span> <span class=\"nu0\">0<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy1\">;<\/span><br \/>\n&nbsp; <span class=\"kw1\">try<\/span><br \/>\n&nbsp; hURL <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> InternetOpenURL<span class=\"br0\">&#40;<\/span>hSession<span class=\"sy1\">,<\/span> <span class=\"kw4\">PChar<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'https:\/\/portail.free.fr\/'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">,<\/span> <span class=\"kw1\">nil<\/span><span class=\"sy1\">,<\/span> <span class=\"nu0\">0<\/span><span class=\"sy1\">,<\/span> <span class=\"nu0\">0<\/span><span class=\"sy1\">,<\/span> <span class=\"nu0\">0<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">try<\/span><br \/>\n&nbsp; &nbsp; &nbsp; InternetReadFile<span class=\"br0\">&#40;<\/span>hURL<span class=\"sy1\">,<\/span> <span class=\"sy2\">@<\/span>Buffer<span class=\"sy1\">,<\/span> <span class=\"kw3\">SizeOf<\/span><span class=\"br0\">&#40;<\/span>Buffer<span class=\"br0\">&#41;<\/span><span class=\"sy1\">,<\/span> BufferLen<span class=\"br0\">&#41;<\/span> <span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; Result <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> SUCCESS<span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">finally<\/span><br \/>\n&nbsp; &nbsp; &nbsp; InternetCloseHandle<span class=\"br0\">&#40;<\/span>hURL<span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">end<\/span><br \/>\n&nbsp; <span class=\"kw1\">finally<\/span><br \/>\n&nbsp; &nbsp; InternetCloseHandle<span class=\"br0\">&#40;<\/span>hSession<span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; <span class=\"kw1\">end<\/span><br \/>\n<span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n<br \/>\n<span class=\"kw1\">function<\/span> TConnectionLoggerService<span class=\"sy1\">.<\/span><span class=\"me1\">GetServiceController<\/span><span class=\"sy1\">:<\/span> TServiceController<span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">begin<\/span><br \/>\n&nbsp; Result <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> ServiceController<span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n<br \/>\n<span class=\"kw1\">function<\/span> TConnectionLoggerService<span class=\"sy1\">.<\/span><span class=\"me1\">Ping<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">:<\/span> <span class=\"kw4\">SmallInt<\/span><span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">begin<\/span><br \/>\n&nbsp; Result <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> SUCCESS<span class=\"sy1\">;<\/span><br \/>\n&nbsp; <span class=\"kw1\">with<\/span> idcmpclntPinger <span class=\"kw1\">do<\/span><br \/>\n&nbsp; <span class=\"kw1\">begin<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">try<\/span><br \/>\n&nbsp; &nbsp; &nbsp; Ping<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">except<\/span><br \/>\n&nbsp; &nbsp; &nbsp; Result <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> FAILURE<span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; Exit<span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span>ReplyStatus<span class=\"sy1\">.<\/span><span class=\"me1\">ReplyStatusType<\/span> &lt;&gt; rsEcho<span class=\"br0\">&#41;<\/span> <span class=\"kw1\">then<\/span><br \/>\n&nbsp; &nbsp; &nbsp; Result <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> FAILURE<span class=\"sy1\">;<\/span> <span class=\"co1\">\/\/pas d'\u00e9cho, on renvoi false.<\/span><br \/>\n&nbsp; <span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n<br \/>\n<span class=\"kw1\">procedure<\/span> TConnectionLoggerService<span class=\"sy1\">.<\/span><span class=\"me1\">ServiceContinue<\/span><span class=\"br0\">&#40;<\/span>Sender<span class=\"sy1\">:<\/span> TService<span class=\"sy1\">;<\/span><br \/>\n&nbsp; <span class=\"kw1\">var<\/span> Continued<span class=\"sy1\">:<\/span> <span class=\"kw4\">Boolean<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">begin<\/span><br \/>\n&nbsp; CheckIt<span class=\"sy1\">;<\/span><br \/>\n&nbsp; tmrCheck<span class=\"sy1\">.<\/span><span class=\"me1\">Enabled<\/span> <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> <span class=\"kw2\">True<\/span><span class=\"sy1\">;<\/span><br \/>\n<span class=\"co1\">\/\/ &nbsp;WriteIt('Restarted @ ' + DateTimeToStr(Now));<\/span><br \/>\n&nbsp; Continued <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> <span class=\"kw2\">True<\/span><span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n<br \/>\n<span class=\"kw1\">procedure<\/span> TConnectionLoggerService<span class=\"sy1\">.<\/span><span class=\"me1\">ServiceExecute<\/span><span class=\"br0\">&#40;<\/span>Sender<span class=\"sy1\">:<\/span> TService<span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">begin<\/span><br \/>\n&nbsp; iLastValue <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> <span class=\"sy3\">-<\/span><span class=\"nu0\">1<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; WriteIt<span class=\"br0\">&#40;<\/span><span class=\"st0\">'Started @ '<\/span> <span class=\"sy3\">+<\/span> <span class=\"kw3\">DateTimeToStr<\/span><span class=\"br0\">&#40;<\/span>Now<span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; tmrCheck<span class=\"sy1\">.<\/span><span class=\"me1\">Interval<\/span> <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> LONG_INTERVAL<span class=\"sy1\">;<\/span><br \/>\n&nbsp; <span class=\"co1\">\/\/ On v\u00e9rifie au d\u00e9marrage<\/span><br \/>\n&nbsp; CheckIt<span class=\"sy1\">;<\/span><br \/>\n&nbsp; <span class=\"co1\">\/\/ On rev\u00e9rifiera \u00e0 intervalles r\u00e9guliers<\/span><br \/>\n&nbsp; tmrCheck<span class=\"sy1\">.<\/span><span class=\"me1\">Enabled<\/span> <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> <span class=\"kw2\">True<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; <span class=\"kw1\">while<\/span> <span class=\"kw1\">not<\/span> Terminated <span class=\"kw1\">do<\/span><br \/>\n&nbsp; &nbsp; ServiceThread<span class=\"sy1\">.<\/span><span class=\"me1\">ProcessRequests<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw2\">True<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><span class=\"co1\">\/\/ wait for termination<\/span><br \/>\n<br \/>\n&nbsp; WriteIt<span class=\"br0\">&#40;<\/span><span class=\"st0\">'Stopped @ '<\/span> <span class=\"sy3\">+<\/span> <span class=\"kw3\">DateTimeToStr<\/span><span class=\"br0\">&#40;<\/span>Now<span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; tmrCheck<span class=\"sy1\">.<\/span><span class=\"me1\">Enabled<\/span> <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> <span class=\"kw2\">False<\/span><span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n<br \/>\n<span class=\"kw1\">procedure<\/span> TConnectionLoggerService<span class=\"sy1\">.<\/span><span class=\"me1\">ServicePause<\/span><span class=\"br0\">&#40;<\/span>Sender<span class=\"sy1\">:<\/span> TService<span class=\"sy1\">;<\/span><br \/>\n&nbsp; <span class=\"kw1\">var<\/span> Paused<span class=\"sy1\">:<\/span> <span class=\"kw4\">Boolean<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">begin<\/span><br \/>\n&nbsp; <span class=\"co1\">\/\/ Une derni\u00e8re v\u00e9rification avant l'arr\u00eat...<\/span><br \/>\n&nbsp; CheckIt<span class=\"sy1\">;<\/span><br \/>\n&nbsp; tmrCheck<span class=\"sy1\">.<\/span><span class=\"me1\">Enabled<\/span> <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> <span class=\"kw2\">False<\/span><span class=\"sy1\">;<\/span><br \/>\n<span class=\"co1\">\/\/ &nbsp;WriteIt('Paused @ ' + DateTimeToStr(Now));<\/span><br \/>\n&nbsp; Paused <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> <span class=\"kw2\">True<\/span><span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n<br \/>\n<span class=\"kw1\">procedure<\/span> TConnectionLoggerService<span class=\"sy1\">.<\/span><span class=\"me1\">tmrCheckTimer<\/span><span class=\"br0\">&#40;<\/span>Sender<span class=\"sy1\">:<\/span> <span class=\"kw4\">TObject<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">begin<\/span><br \/>\n&nbsp; CheckIt<span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n<br \/>\n<span class=\"kw1\">procedure<\/span> TConnectionLoggerService<span class=\"sy1\">.<\/span><span class=\"me1\">WriteIt<\/span><span class=\"br0\">&#40;<\/span>sToWrite<span class=\"sy1\">:<\/span> <span class=\"kw4\">string<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">var<\/span><br \/>\n&nbsp; sFileName<span class=\"sy1\">:<\/span> <span class=\"kw4\">string<\/span><span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">begin<\/span><br \/>\n&nbsp; <span class=\"co1\">\/\/ Je recalcule \u00e0 chaque fois... parce que je ne suis pas radin en CPU.. et pour que le changement de jour fonctionne tout seul...<\/span><br \/>\n&nbsp; sFileName <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> <span class=\"kw3\">ExtractFilePath<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw3\">ParamStr<\/span><span class=\"br0\">&#40;<\/span><span class=\"nu0\">0<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy3\">+<\/span> <span class=\"st0\">'ConnectionLogger-'<\/span> <span class=\"sy3\">+<\/span> <span class=\"kw3\">IntToStr<\/span><span class=\"br0\">&#40;<\/span>YearOf<span class=\"br0\">&#40;<\/span>Now<span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy3\">+<\/span> <span class=\"st0\">'-'<\/span> <span class=\"sy3\">+<\/span> AddLeadingZeroes<span class=\"br0\">&#40;<\/span>MonthOf<span class=\"br0\">&#40;<\/span>Now<span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy3\">+<\/span> <span class=\"st0\">'-'<\/span> <span class=\"sy3\">+<\/span> AddLeadingZeroes<span class=\"br0\">&#40;<\/span>DayOf<span class=\"br0\">&#40;<\/span>Now<span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy3\">+<\/span> <span class=\"st0\">'.log'<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; <span class=\"kw3\">AssignFile<\/span><span class=\"br0\">&#40;<\/span>fPointer<span class=\"sy1\">,<\/span> sFileName<span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; <span class=\"kw1\">if<\/span> <span class=\"kw3\">FileExists<\/span><span class=\"br0\">&#40;<\/span>sFileName<span class=\"br0\">&#41;<\/span> <span class=\"kw1\">then<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw3\">Append<\/span><span class=\"br0\">&#40;<\/span>fPointer<span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; <span class=\"kw1\">else<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw3\">Rewrite<\/span><span class=\"br0\">&#40;<\/span>fPointer<span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n<br \/>\n&nbsp; <span class=\"kw3\">Writeln<\/span><span class=\"br0\">&#40;<\/span>fPointer<span class=\"sy1\">,<\/span> sToWrite<span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; <span class=\"kw3\">CloseFile<\/span><span class=\"br0\">&#40;<\/span>fPointer<span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n<br \/>\n<span class=\"kw1\">end<\/span><span class=\"sy1\">.<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p>Si vous avez des id\u00e9es qui pourraient am\u00e9liorer mon service, n&rsquo;h\u00e9sitez pas&#8230; (Tout n&rsquo;est pas optimis\u00e9, je le sais.. le but \u00e9tait d&rsquo;avoir rapidement \u00e0 disposition des donn\u00e9es me permettant d&rsquo;investiguer&#8230;)<\/p>\n<div class=\"thanks_button_div\" \n                  style=\"float: right; margin-right: 10px; margin-top:10px;\"><div id=\"thanksButtonDiv_1147_1\" style=\"background-image:url(https:\/\/blogs.wittwer.fr\/whiler\/wp-content\/plugins\/thanks-you-counter-button\/images\/thanks_compact_brown1.png); background-repeat:no-repeat; float: left; display: inline;\"\n                onmouseover=\"javascript:thankYouChangeButtonImage('thanksButtonDiv_1147_1', true);\" \n                onmouseout=\"javascript:thankYouChangeButtonImage('thanksButtonDiv_1147_1', false);\"\n                onclick=\"javascript:thankYouChangeButtonImage('thanksButtonDiv_1147_1', false);\" >\n                <input type=\"button\" onclick=\"thankYouButtonClick(1147, 'You left &ldquo;Thanks&rdquo; already for this post')\" value=\"Merci\u00a0 0\"\n                  class=\"thanks_button thanks_compact thanks_brown1\"\n                  style=\"  font-family: Verdana, Arial, Sans-Serif; font-size: 14px; font-weight: normal;; color:#00f;\"\n                  id=\"thanksButton_1147_1\" title=\"Click to leave &ldquo;Thanks&rdquo; for this post\"\/>\n             <\/div><div id=\"ajax_loader_1147_1\" style=\"display:inline;visibility: hidden;\"><img decoding=\"async\" alt=\"ajax loader\" src=\"https:\/\/blogs.wittwer.fr\/whiler\/wp-content\/plugins\/thanks-you-counter-button\/images\/ajax-loader.gif\" \/><\/div><\/div>","protected":false},"excerpt":{"rendered":"<p>Apr\u00e8s l&rsquo;avoir laisser tourner un peu plus de 24 heures, j&rsquo;ai mis \u00e0 jour le code du service pour contr\u00f4ler ma connexion internet&#8230;<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_links_to":"","_links_to_target":""},"categories":[7,6,11],"tags":[27,154,131,108,73],"class_list":["post-1147","post","type-post","status-publish","format-standard","hentry","category-delphi","category-dev","category-web","tag-coloration-syntaxique","tag-delphi","tag-free","tag-script","tag-services-msc"],"_links":{"self":[{"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/posts\/1147","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/comments?post=1147"}],"version-history":[{"count":1,"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/posts\/1147\/revisions"}],"predecessor-version":[{"id":6393,"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/posts\/1147\/revisions\/6393"}],"wp:attachment":[{"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/media?parent=1147"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/categories?post=1147"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/tags?post=1147"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}