时间: 2021-07-31 作者:daque
在windows体例中,咱们常常用ping.exe来尝试搜集的连通性。 ping的实行进程很大略,该吩咐将激励ip层发送一个大略的ip包,普遍是32字节。而手段方收到这个包后,将源地方和手段地方变幻一下,从新发送这个包即可,固然还要加少许超机会制。 本来,咱们也可用c++ builder netmaster中的nmecho控件来实行搜集贯穿检验和测定功效。 开始设置以次控件: 三个edit控件:一个用来接受长途长机的ip地方或域名,一个用来接受用户树立的超机会制的功夫,一个用来树立端标语。 两个richedit控件:一个用来给长途长机发送消息,一个用来接受来自长途长机的消息。 两个checkbox控件:用来用户能否本人设定端标语。 一个button控件:用来实行尝试。 一个statusbar控件:用来表露运用步调的状况。 步调实行代码如次: void __fastcall tform1::button1click(tobject ender) { //树立nmecho控件的规范tcp/ip属性 nmecho1-〉host=edit1-〉text ; nmecho1-〉timeout=strtoint(edit2-〉text) ; if(checkbox1-〉checked) nmecho1-〉port=strtoint(edit3-〉text); else nmecho1-〉port=7; //tcp/ip中echo的默许端标语 nmecho1-〉reportlevel=status_basic; nmecho1-〉connect(); //创造贯穿 richedit2-〉clear (); for(int i=0;i //richedit1用来给长途长机发送消息 richedit2-〉text=richedit2-〉text +nmecho1-〉echo(richedit1-〉lines-〉 strings[i]); nmecho1-〉disconnect (); } 提防:在挪用nmecho控件的connect()本领时,该当保证在接受数据之前贯穿仍旧创造。当挪用connect()本领后,即使用户输出的是域地方而不是ip地方,且域名效劳器胜利地领会了这个域名,将触发控件的onhostresoved事变,在此事变的处置中,咱们将领会胜利的动静在状况栏中表露给用户。简直实行代码如次: void __fastcall tform1::nmecho1hostresolved(tcomponent ender) { statusbar1-〉panels-〉items[0]-〉text="host resolved!"; } 即使用户输出的长途长机不精确,将触发控件的oninvalidhost事变,在此事变的处置中,弹出对话框诉求用户从新输出长途长机的ip地方或域名地方,而后试图与效劳珍视建贯穿。简直代码如次: void __fastcall tform1::nmecho1invalidhost(bool &&handled) { ansistring s; if(inputquery("invailid host!","specify a new host:",s)) { nmecho1-〉host=s; handled=true; } } 创造贯穿后,将触发控件的onconnect事变,在此事变的处置中,咱们将贯穿胜利的动静在状况栏中表露给用户。简直实行代码如次: void __fastcall tform1::nmecho1connect(tobject ender) { statusbar1-〉panels-〉items[0]-〉text="echo has connected host!"; } 即使在挪用connect()本领后,在超时功夫仍旧没有与效劳器贯穿,将触发控件的onconnectfailed事变,在此事变的处置中,咱们将贯穿波折的动静表露给用户。简直实行代码如次: void __fastcall tform1::nmecho1connectionfailed(tobject ender) { showmessage("connection failed!"); } 除去nmecho控件不妨实行之上功效外,netmaster的nmdaytime、nmtime这两个控件也能实行。本领与nmecho控件一律,辨别是nmdaytime和nmtime这两个控件不必开始挪用connect()本领,它们与效劳器的贯穿是在运用daytimestr、timestr属性时机动举行的.