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.
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