Checking if a port is listening

Anonymouse via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Wed Mar 16 15:22:15 PDT 2016


On Wednesday, 16 March 2016 at 20:44:12 UTC, Lucien wrote:
> Hello,
>
> I want to know if a port of an ip address is listening, 
> actually, I've this :
> http://pastebin.com/pZhm0ujy
> (checking port 22/ssh)
>
> It works, but it took me ~10min to scan 30 addresses.
>
> How can reduce the expiration delay ?

I don't know if they apply here, but you can lower the send and 
receive timeouts for the socket. I'm not sure which (or if 
either) of them you want to tweak.

https://dlang.org/library/std/socket/socket_option.html


import core.thread;  // for .seconds
s.setOption(SocketOptionLevel.SOCKET, SNDTIMEO, 10.seconds);
s.setOption(SocketOptionLevel.SOCKET, RCVTIMEO, 10.seconds);


I guess you could also use a non-blocking socket and decide 
yourself when enough time has passed to declare it a failed 
attempt.


More information about the Digitalmars-d-learn mailing list