DESCRIPTION¶
Open a non-blocking TCP network connection to host and port. On success, the connection is bound to the current object and the lfun logon(A) is called in the object.
Returns one of the following values:
NC_SUCCESSSuccessNC_EUNKNOWNHOSTthe host address could not be resolvedNC_ENOSOCKETerror during socket creationNC_ENOBINDsocket could not be boundNC_ENOCONNECTsocket could not be connected
- (Details of the last three errors can be found in the driver’s error log.)
- NC_ECONNREFUSEDremote host not listening/refusing- NC_EMCONNtoo many pending connections (transient, try again later)- NC_ENORESSOURCESinsufficient system ressources (transient, try again later)
If the driver is configured to support IPv6, host is first interpreted as IPv6 hostname. If that fails, host is then interpretd as IPv4 hostname.
If the connection can’t be established immediately, the efun returns ‘success’ and the driver will check in the background for the progress of the connection. When it is established, logon(A) will be called in the object. If the connection fails, logon(-1) will be called in the object.
The efun raises a privilege violation (“net_connect”, host, port).
Limit
A non-blocking connect doesn’t imply a non-blocking forward name resolution. If you provide a hostname instead of an IP address to connect to, the driver will block until the name is resolved. This may be an issue, depending on how fast your nameserver replies. Non-blocking forward DNS resolution can currently only be achieved using ERQ_LOOKUP.
LORE¶
- First version 1992 by Snake and LynX for Nemesis.
- Improved 1993 by Junky.
HISTORY¶
- introduced (3.2.10)