自動檢查網路連線狀況,如果異常自動重連

2021-05-24 06:47:12 字數 3287 閱讀 9573

unit clienttestconnected;

inte***ce

uses

sysutils, classes, sqlexpr,unetcommon;

type

twaitthread = class(tthread)

private

fnetconnect:boolean;

fcheckinterval: integer;

fmsg: string;

protected

procedure showmsg;

procedure execute; override;

procedure serveropen;

procedure serverclose;

function connremotesvr(cn:tsqlconnection;const hostname,username,password:string;

const port:integer):boolean;

public

netcheck1: tnetcheck;

constructor create(const acheckinterval: integer);

destructor destroy; override;

procedure checknetconnect(sender: tobject; var objwbemobject,

objwbemasynccontext: olevariant);

procedure checknetdisconnect(sender: tobject; var objwbemobject,

objwbemasynccontext: olevariant);

end;

implementation

uses clientform;

procedure twaitthread.serverclose;

begin

frmmain.sqlconnection1.close;

end;

procedure twaitthread.serveropen;

begin

if fnetconnect then

fmsg := '正在連線...'

else fmsg :='網路異常';

synchronize(showmsg);

if connremotesvr(frmmain.sqlconnection1,'localhost','cxg','123',211) then

begin

fmsg := '網路正常';

synchronize(showmsg);

end;

end;

procedure twaitthread.showmsg;

begin

frmmain.label1.caption := fmsg;

end;

procedure twaitthread.execute;

begin

tryserveropen;

fnetconnect :=true;

except

fnetconnect :=false;

end;

repeat

sleep(fcheckinterval);

if not fnetconnect then

begin

fcheckinterval := 3000;

serverclose;

serveropen;

end;

until terminated;

end;

procedure twaitthread.checknetconnect(sender: tobject; var objwbemobject,

objwbemasynccontext: olevariant);

begin

fnetconnect := true;

end;

procedure twaitthread.checknetdisconnect(sender: tobject; var objwbemobject,

objwbemasynccontext: olevariant);

begin

fnetconnect :=false;

end;

function twaitthread.connremotesvr(cn: tsqlconnection; const hostname, username,

password: string; const port: integer): boolean;

begin

trycn.close;

cn.drivername := 'datasnap';

cn.loginprompt :=false;

cn.connectionname := 'datasnapconnection';

cn.params.clear;

cn.params.add('drivername=datasnap');

cn.params.add('hostname='+hostname);

cn.params.add('port='+inttostr(port));

cn.params.add('user_name='+username);

cn.params.add('password='+password);

cn.open;

result :=true;

except

result :=false;

end;

end;

constructor twaitthread.create(const acheckinterval: integer);

begin

fcheckinterval := acheckinterval;

netcheck1 :=tnetcheck.create(nil);

netcheck1.onnetwireconnect:=checknetconnect;

netcheck1.onnetwiredisconnect:=checknetdisconnect;

inherited create(false);

end;

destructor twaitthread.destroy;

begin

netcheck1.free;

netcheck1 :=nil;

inherited;

end;

end.

Windows批處理 自動檢查網路連通性

檢測網路連通性我用的是叢遠到近的方法,即 外網 閘道器 內網 本機 指令碼的實現也是根據這個順序用 ping 來檢測,為提高檢測速度,這裡我只 ping了2 次,各位可以根據自己的需要進行修改。使用方法大神們都會的 複製 另存為 bat 檔案後執行。echo off color 2f title 網...

GG 網路連線。

www.google.com 還有 maps.google.com 又不能訪問了。不太相信是 google 自身的技術原因。m 之類的競爭對手也不至於在新的瀏覽器裡採取什麼手段。真不知道怎麼揣測了。不知道是不是有 高能強智 的干擾項在起作用。這種技術在今天的這裡好像已經很成熟的樣子了。以前,還可以用...

virtualbox Ubuntu網路連線思路

1.首先ifconfig a檢視ubuntu的當前網路介面狀態 2.如果是網絡卡設定的問題,輸入以下命令修改網絡卡設定 新增網絡卡,設定動態ip 3.啟動網絡卡 sudo ifup eth0關閉命令是sudo ifdown eth0 4.重啟網路服務 sudo service network res...