Why Can't I Connect? is an open source tool which helps you identify and solve TCP/IP connection errors. It has direct support for connecting to a range of common server types (Microsoft SQL Server, MySQL Server, FTP, SFTP, IMAP, POP3, SMTP, IRC, LDAP, Usenet), as well as providing generic client and server options.
If you can't receive email from a POP3 server, say, you would choose the POP3 option, enter your server name or IP address, and optionally select a protocol (STARTLS, SSL/ TLS) or enter a port. (You don't have to enter a user name or password at any point, and so there's no need to worry about security: Why Can't I Connect? tries to reach the server only, it doesn't handle authentication.)
Once you're set up, click OK and Why Can't I Connect? attempts to make the connection, reporting on what happens every step of the way. This includes identifying the current host name, checking for a bindable IP address, binding it to a socket handle, setting the receive and send timeouts, locating an IP address for the server and trying to make the connection.
If any of this fails then an error message appears with possible explanations: "your network connection is down", your DNS server is down", "the port is being blocked by a firewall", "the server is slow", and so on.
This final analysis won't usually give you a definitive answer. When we tried running a POP3 connection to a web server, for instance, we got a "permission denied" error, with suggestions including "your network connection is down", "the port is not listening/ active", "the port is being blocked by a firewall", "the maximum connections for the server has been exceeded". The second was correct - there was nothing listening at port 110 - but Why Can't I Connect? has no way to know that for sure, and you'll need to do more work to turn its report into a solution.
The program can help point you in the right direction, though, and it has some welcome bonus features thrown in. Bridging (tracing the conversation between an existing client and server) is our favourite, but there are also tools to report on connecting/ listening/ reserved ports, and a scripting option can automate testing to track down intermittent errors.
1. Added a major enhancement to the Neighbors Tool. The tool will now search by port connections as well as ICMP echo requests and the socket function getnameinfo. 15 common ports have been predefined as well as the ability to add additional ports. The predefined ports are:
AppleTalk (201) - AppleTalk routing maintenance, AppleTalk (202) - AppleTalk name binding, AppleTalk (204) - AppleTalk echo, AppleTalk (206) - AppleTalk zone information, http (80), https (443), ipp / cups (631), NetBIOS (137), NetBIOS (138), NetBIOS (139), nfs (2049), samba / smb / cifs (445), snmp (161), snmp (162), ssh (22)
There is also the ability to search by ports exclusively. For example, search a range of IP address that are listening on http (port 80).
2. Added a question dialog in preferences after changing the application language to synchronize the trace language.
3. Now showing the currently open trace file in the status line while hovering over the 'Create / Change The Log File' menu option.
4. Fixed a bug where false positive ICMP echo requests were occasionally reported in the neighbors tool.
5. Fixed a small memory leak in the neighbors tool.