A socket is defined as one endpoint of a two-way communication link between two programs running on the network. A socket is bound to a port number so that the TCP layer can identify the application that data is destined to be sent.
Normally an FTP server runs on a specific machine and has a socket that is set to a specific port number. The server mainly waits and listens to the socket for a client to make a connection request. The client makes a connection request by trying to meet with the server on the server's machine and port. If everything goes well, the server accepts the connection. Upon acceptance, the server gets a new socket bound to the same port. It needs a new socket so that it can continue to listen to the original socket for connection requests from other clients while tending to the needs of the currently connected client. On the client side, if the connection is accepted, a socket is successfully created and the client can use the socket to communicate with the server. The client and server can now communicate by writing to or reading from their sockets.
A socket error can occur if one or more of the above conditions are not met or something is blocking communication between the client and server (e.g. firewall, anti-virus). Additionally, a client connection can already be established with a server when a socket error occurs such as in cases when the network connection goes down or the host that the client connects to suddenly crashes or reboots.
Common FTP Socket Error Codes
Note: Along with the errors listed above, there are several other socket errors that can possibly occur. If you are receiving a socket error code that is not listed above, please refer to the following MSDN site for a complete listing:
- 11001 - Host not found.
Check that the hostname or IP address has been entered correctly.
- 11004 - Valid name, no data record of requested type.
This error generally indicates that the specified FTP server name is incorrect or not specified. Try entering the hostname or IP address, not a URL (e.g. if ftp://server.domain.com/ is entered, then change it to the shared ip address). Another possibility is that connection is blocked by a firewall. Try temporarily turning off the Windows firewall or any other software firewall you are running.
- 10061 - Connection refused.
The hostname is correct, but the FTP server is not listening on the port, there is no FTP server running, or a firewall is blocking the connection.
- 10093 - Connection failed.
This can happen when the network connection goes down, e.g. the FTP server is no longer connected to the network.
- 10039 - Destination address required.
There may be a problem getting the IP address for the hostname. If you have entered an IP Address, try entering a server and domain name instead (e.g. server.domain.com). Another possibility is that connection is blocked by a firewall. Try temporarily turning off any firewall you are running.
- 10052 - Network dropped connection on reset.
The host you were connected to crashed and rebooted. Try reconnecting at a later time.
- 10054 - Connection reset by peer.
Basically, an existing connection was forcibly closed by the remote host. This normally results if the peer application on the remote host is suddenly stopped, the host is rebooted or the remote network was somehow disabled.
- 10022 - Invalid argument.
Some invalid argument was somehow supplied. In some instances, it also refers to the current state of the socket (e.g. socket is not listening). Also, a firewall running on the host or client machine can be blocking transmission.
Window Sockets Error Codes
Additionally, if you are encountering any FTP related issues, we strongly suggest that you test the transmission with other FTP clients. This is a good method in determining the root of the problem. Keep in mind that when you are having similar problematic behavior in multiple clients against the same server, it's more than likely a server problem, and needs a support ticket.