Monday, 15 February 2010

Check remote port access using Delphi - Telnet style -



Check remote port access using Delphi - Telnet style -

i deploy application in environments heavily stricken firewalls. find myself using telnet check if port open , accessible in network. implement equivalent functionality of command, telnet [domainname or ip] [port], in delphi.

is adequate effort open , close tcp/ip socket without sending or receiving data? is there risk might crash arbitrary application/service listening on other end?

here's code:

function isportactive(ahost : string; aport : word):boolean; var idtcpclient : tidtcpclient; begin idtcpclient := tidtcpclient.create(nil); seek seek idtcpclient.host := ahost; idtcpclient.port := aport; idtcpclient.connect; except //igonre exceptions end; result := idtcpclient.connected; idtcpclient.disconnect; freeandnil(idtcpclient); end; end;

if want check whether port open, can utilize this:

function isportactive(ahost : string; aport : word): boolean; var idtcpclient : tidtcpclient; begin result := false; seek idtcpclient := tidtcpclient.create(nil); seek idtcpclient.host := ahost; idtcpclient.port := aport; idtcpclient.connect; result := true; idtcpclient.free; end; except //ignore exceptions end; end;

but tells if any server app has opened port. if want create sure server app opened port, have communicate server , create sure responses expecting. reason, many mutual server protocols provide initial greeting clients can identify type of server connected to. might consider adding similar greeting server, if @ liberty create changes communication protocol.

simply opening connection server not impose risk of crashing server, momentarily occupy slot in server's client list. however, if send info server, , server app connected not app, run small risk if server cannot handle arbitrary info not conform expected protocol. pretty rare. sending little command not uncommon , pretty safe, either reply (which may in format not conform protocol, assume failure), or may not reply @ (like if server waiting more data, or not designed homecoming reply) in case can time out reading , assume failure.

delphi telnet indy

No comments:

Post a Comment