connect.c revision 4fd606d1f5abe38e1f42c38de1d2e895166bd0f4
2N/A Implement the connect API. 2N/A Copyright (c) 2011, Intel Corporation 2N/A All rights reserved. This program and the accompanying materials 2N/A are licensed and made available under the terms and conditions of the BSD License 2N/A which accompanies this distribution. The full text of the license may be found at 2N/A THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 2N/A WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 2N/A Connect to a remote system via the network. 2N/A The connect routine attempts to establish a connection to a 2N/A socket on the local or remote system using the specified address. 2N/A There are three states associated with a connection: 2N/A <li>Not connected</li> 2N/A <li>Connection in progress</li> 2N/A In the initial "Not connected" state, calls to connect start the connection 2N/A processing and update the state to "Connection in progress". During 2N/A the "Connection in progress" state, connect polls for connection completion 2N/A and moves the state to "Connected" after the connection is established. 2N/A Note that these states are only visible when the file descriptor is marked 2N/A with O_NONBLOCK. Also, the POLLOUT bit is set when the connection 2N/A completes and may be used by poll or select as an indicator to call 2N/A documentation is available online. 2N/A @param [in] s Socket file descriptor returned from ::socket. 2N/A @param [in] address Network address of the remote system 2N/A @param [in] address_len Length of the remote network address 2N/A @return This routine returns zero if successful and -1 when an error occurs. 2N/A In the case of an error, ::errno contains more details. // Locate the context for this socket // Determine if the operation is blocking // Attempt to connect to a remote system // Return the new socket file descriptor