Socket.BeginConnect Method (EndPoint, AsyncCallback, Object)
Begins an asynchronous request for a remote host connection.
Assembly: System (in System.dll)
<HostProtectionAttribute(SecurityAction.LinkDemand, ExternalThreading := True)> Public Function BeginConnect ( remoteEP As EndPoint, callback As AsyncCallback, state As Object ) As IAsyncResult
An object that contains state information for this request.
remoteEP is null.
An error occurred when attempting to access the socket. See the Remarks section for more information.
The Socket has been closed.
A caller higher in the call stack does not have permission for the requested operation.
If you are using a connection-oriented protocol, themethod starts an asynchronous request for a connection to the remoteEP parameter. If you are using a connectionless protocol, establishes a default remote host. Connecting or setting the default remote host asynchronously gives you the ability to send and receive data within a separate execution thread.
You can create a callback method that implements the AsyncCallback delegate and pass its name to the method. At the very minimum, you must pass the Socket to through the state parameter. If your callback needs more information, you can create a small class to hold the Socket, and the other required information. Pass an instance of this class to the method through the state parameter.
Your callback method should invoke the EndConnect method. When your application calls , the system will use a separate thread to execute the specified callback method, and will block on EndConnect until the Socket connects successfully or throws an exception. If you want the original thread to block after you call the method, use WaitOne. Call the Set method on a ManualResetEvent in the callback method when you want the original thread to continue executing. For additional information on writing callback methods see Marshaling a Delegate as a Callback Method.
If you are using a connectionless protocol such as UDP, you do not have to call BeginSendTo and BeginReceiveFrom to communicate with a remote host. If you do call , any datagrams that arrive from an address other than the specified default will be discarded. If you wish to set your default remote host to a broadcast address, you must first call SetSocketOption and set Broadcast to true. If you cannot, will throw a SocketException.before sending and receiving data. You can use
If you are using a connection-oriented protocol and do not call Bind before calling , the underlying service provider will assign the most appropriate local network address and port number. If you are using a connectionless protocol, the service provider will not assign a local network address and port number until you call the BeginSend or ReceiveFrom method. If you want to change the default remote host, call the method again with the desired endpoint.
To cancel a pending call to the BeginConnectmethod, close the Socket. When the Closemethod is called while an asynchronous operation is in progress, the callback provided to the BeginConnectmethod is called. A subsequent call to the EndConnectmethod will throw an ObjectDisposedException to indicate that the operation has been cancelled.
If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation in the MSDN library for a detailed description of the error.
If this socket has previously been disconnected, then BeginConnect must be called on a thread that will not exit until the operation is complete. This is a limitation of the underlying provider.
This member outputs trace information when you enable network tracing in your application. For more information, see Network Tracing in the .NET Framework.
The execution context (the security context, the impersonated user, and the calling context) is cached for the asynchronous Socket methods. After the first use of a particular context (a specific asynchronous Socket method, a specific Socket instance, and a specific callback), subsequent uses of that context will see a performance improvement.
Legacy Code Example
The following code example initiates an asynchronous connection attempt.
Dim lipa As IPHostEntry = Dns.Resolve("host.contoso.com") Dim lep As New IPEndPoint(lipa.AddressList(0), 11000) Dim s As New Socket(lep.Address.AddressFamily, SocketType.Stream, ProtocolType.Tcp) Try While True allDone.Reset() Console.WriteLine("Establishing Connection") s.BeginConnect(lep, New AsyncCallback(AddressOf Async_Send_Receive.Connect_Callback), s) allDone.WaitOne() End While Catch e As Exception Console.WriteLine(e.ToString()) End Try End Sub 'Connect
Available since 1.1