Socket.BeginConnect Socket.BeginConnect Socket.BeginConnect Socket.BeginConnect Method

Определение

Начинает выполнение асинхронного запроса для подключения к удаленному узлу.Begins an asynchronous request for a remote host connection.

Перегрузки

BeginConnect(EndPoint, AsyncCallback, Object) BeginConnect(EndPoint, AsyncCallback, Object) BeginConnect(EndPoint, AsyncCallback, Object) BeginConnect(EndPoint, AsyncCallback, Object)

Начинает выполнение асинхронного запроса для подключения к удаленному узлу.Begins an asynchronous request for a remote host connection.

BeginConnect(IPAddress, Int32, AsyncCallback, Object) BeginConnect(IPAddress, Int32, AsyncCallback, Object) BeginConnect(IPAddress, Int32, AsyncCallback, Object) BeginConnect(IPAddress, Int32, AsyncCallback, Object)

Начинает выполнение асинхронного запроса для подключения к удаленному узлу.Begins an asynchronous request for a remote host connection. узел задается объектом IPAddress и номером порта.The host is specified by an IPAddress and a port number.

BeginConnect(IPAddress[], Int32, AsyncCallback, Object) BeginConnect(IPAddress[], Int32, AsyncCallback, Object) BeginConnect(IPAddress[], Int32, AsyncCallback, Object) BeginConnect(IPAddress[], Int32, AsyncCallback, Object)

Начинает выполнение асинхронного запроса для подключения к удаленному узлу.Begins an asynchronous request for a remote host connection. узел задается массивом IPAddress и номером порта.The host is specified by an IPAddress array and a port number.

BeginConnect(String, Int32, AsyncCallback, Object) BeginConnect(String, Int32, AsyncCallback, Object) BeginConnect(String, Int32, AsyncCallback, Object) BeginConnect(String, Int32, AsyncCallback, Object)

Начинает выполнение асинхронного запроса для подключения к удаленному узлу.Begins an asynchronous request for a remote host connection. Узел задается именем узла и номером порта.The host is specified by a host name and a port number.

BeginConnect(EndPoint, AsyncCallback, Object) BeginConnect(EndPoint, AsyncCallback, Object) BeginConnect(EndPoint, AsyncCallback, Object) BeginConnect(EndPoint, AsyncCallback, Object)

Начинает выполнение асинхронного запроса для подключения к удаленному узлу.Begins an asynchronous request for a remote host connection.

public:
 IAsyncResult ^ BeginConnect(System::Net::EndPoint ^ end_point, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginConnect (System.Net.EndPoint end_point, AsyncCallback callback, object state);
member this.BeginConnect : System.Net.EndPoint * AsyncCallback * obj -> IAsyncResult
Public Function BeginConnect (end_point As EndPoint, callback As AsyncCallback, state As Object) As IAsyncResult

Параметры

remoteEP
EndPoint EndPoint EndPoint EndPoint

Объект EndPoint, представляющий удаленный узел.An EndPoint that represents the remote host.

state
Object Object Object Object

Объект, содержащий сведения о состоянии для этого запроса.An object that contains state information for this request.

Возвраты

Объект IAsyncResult, который ссылается на асинхронное подключение.An IAsyncResult that references the asynchronous connection.

Исключения

Произошла ошибка при попытке доступа к сокету.An error occurred when attempting to access the socket.

Вызывающий объект, находящийся выше в стеке вызовов, не имеет разрешения на запрошенную операцию.A caller higher in the call stack does not have permission for the requested operation.

Сокет Socket был переведен в состояние прослушивания путем вызова Listen(Int32), либо асинхронная операция уже выполняется.The Socket has been placed in a listening state by calling Listen(Int32), or an asynchronous operation is already in progress.

Примеры

В следующем примере кода инициируется попытка асинхронного подключения.The following code example initiates an asynchronous connection attempt.

IPHostEntry^ lipa = Dns::Resolve( "host.contoso.com" );
IPEndPoint^ lep = gcnew IPEndPoint( lipa->AddressList[ 0 ], 11000 );

Socket^ s = gcnew Socket( lep->Address->AddressFamily,
   SocketType::Stream,
   ProtocolType::Tcp );
try
{
   while ( true )
   {
      allDone->Reset();

      Console::WriteLine( "Establishing Connection" );
      s->BeginConnect( lep, gcnew AsyncCallback(
         &Async_Send_Receive::Connect_Callback ), s );

      allDone->WaitOne();
   }
}
catch ( Exception^ e ) 
{
   Console::WriteLine( e );
}
IPHostEntry lipa = Dns.Resolve("host.contoso.com");
IPEndPoint lep = new IPEndPoint(lipa.AddressList[0], 11000);

      Socket s = new Socket(lep.Address.AddressFamily,
      	                           SocketType.Stream,
                                        ProtocolType.Tcp);
      try{
         
                while(true){
                allDone.Reset();

                Console.WriteLine("Establishing Connection");
                s.BeginConnect(lep, new AsyncCallback(Async_Send_Receive.Connect_Callback), s);

                allDone.WaitOne();
           }
      }
      catch (Exception e){
           Console.WriteLine(e.ToString());
      }
   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

Комментарии

Если вы используете протокол с установлением соединения BeginConnect метод начинает выполнение асинхронного запроса для соединения с remoteEP параметра.If you are using a connection-oriented protocol, the BeginConnect method starts an asynchronous request for a connection to the remoteEP parameter. Если вы используете протокол без установления соединения, BeginConnect устанавливает удаленный узел по умолчанию.If you are using a connectionless protocol, BeginConnect 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.

Можно создать метод обратного вызова, который реализует AsyncCallback делегат и передайте ее имя в BeginConnect метод.You can create a callback method that implements the AsyncCallback delegate and pass its name to the BeginConnect method. По крайней мере, необходимо передать Socket для BeginConnect через state параметра.At the very minimum, you must pass the Socket to BeginConnect through the state parameter. Если обратного вызова необходимы дополнительные сведения, можно создать небольшой класс для хранения Socketи другие необходимые сведения.If your callback needs more information, you can create a small class to hold the Socket, and the other required information. Передать экземпляр этого класса для BeginConnect метод с помощью state параметра.Pass an instance of this class to the BeginConnect method through the state parameter.

Метод обратного вызова должен вызывать EndConnect метод.Your callback method should invoke the EndConnect method. Когда приложение вызывает BeginConnect, система будет использовать отдельный поток для выполнения указанный метод обратного вызова и заблокирует EndConnect пока Socket успешно подключается, или создает исключение.When your application calls BeginConnect, 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. Если необходимо, чтобы заблокировать после вызова исходный поток BeginConnect метода, используйте WaitOne.If you want the original thread to block after you call the BeginConnect method, use WaitOne. Вызовите метод набора ManualResetEvent в методе обратного вызова, если вы хотите продолжить выполнение исходного потока.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.

Если вы используете протокол без установления соединения, например UDP, у вас нет для вызова BeginConnect до отправки и получения данных.If you are using a connectionless protocol such as UDP, you do not have to call BeginConnect before sending and receiving data. Можно использовать BeginSendTo и BeginReceiveFrom для обмена данными с удаленным узлом.You can use BeginSendTo and BeginReceiveFrom to communicate with a remote host. Если вы вызываете BeginConnect, будут потеряны любые датаграммы, поступившие от адрес, отличный от заданного по умолчанию.If you do call BeginConnect, any datagrams that arrive from an address other than the specified default will be discarded. Если вы хотите установить удаленный узел по умолчанию широковещательный адрес, необходимо сначала вызвать SetSocketOption и присвоено вещания true.If you wish to set your default remote host to a broadcast address, you must first call SetSocketOption and set Broadcast to true. Если это невозможно, BeginConnect вызовет SocketException.If you cannot, BeginConnect will throw a SocketException.

Если вы используете протокол с установлением соединения и не следует вызывать Bind перед вызовом BeginConnect, основному поставщику услуг назначит наиболее подходящий локальный сетевой адрес и номер порта.If you are using a connection-oriented protocol and do not call Bind before calling BeginConnect, the underlying service provider will assign the most appropriate local network address and port number. Если вы используете протокол без установления соединения, поставщик услуг не присвоит локальный сетевой адрес и порт номер до вызова метода BeginSend или ReceiveFrom метод.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. Если вы хотите изменить удаленный узел по умолчанию, вызовите BeginConnect метод повторно с требуемой конечной точкой.If you want to change the default remote host, call the BeginConnect method again with the desired endpoint.

Чтобы отменить ожидающий вызов BeginConnect метод close Socket.To cancel a pending call to the BeginConnect method, close the Socket. Когда Close во время выполнения асинхронной операции, вызывается метод, обратный вызов передается BeginConnect вызывается метод.When the Close method is called while an asynchronous operation is in progress, the callback provided to the BeginConnect method is called. Последующий вызов EndConnect метод вызывает исключение ObjectDisposedException для указания, что операция была отменена.A subsequent call to the EndConnect method will throw an ObjectDisposedException to indicate that the operation has been cancelled.

Примечание

Если вы получили SocketException, используйте SocketException.ErrorCode свойство для получения конкретного кода ошибки.If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. После получения этот код, см. по код ошибки API сокетов Windows версии 2 документации подробное описание ошибки.After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

Примечание

Если этот сокет ранее был отключен, затем BeginConnect должен вызываться в потоке, который не завершит работу до завершения операции.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. Дополнительные сведения см. в разделе сетевая трассировка в .NET Framework.For more information, see Network Tracing in the .NET Framework.

Примечание

Контекст выполнения (контекст безопасности, олицетворенного пользователя и контекст вызова) кэшируется для асинхронной Socket методы.The execution context (the security context, the impersonated user, and the calling context) is cached for the asynchronous Socket methods. После первого использования определенного контекста (определенного асинхронного Socket метод, определенный Socket экземпляра и определенный обратный вызов), для последующего использования этого контекста будет повыситься производительность.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.

Дополнительно

BeginConnect(IPAddress, Int32, AsyncCallback, Object) BeginConnect(IPAddress, Int32, AsyncCallback, Object) BeginConnect(IPAddress, Int32, AsyncCallback, Object) BeginConnect(IPAddress, Int32, AsyncCallback, Object)

Начинает выполнение асинхронного запроса для подключения к удаленному узлу.Begins an asynchronous request for a remote host connection. узел задается объектом IPAddress и номером порта.The host is specified by an IPAddress and a port number.

public:
 IAsyncResult ^ BeginConnect(System::Net::IPAddress ^ address, int port, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginConnect (System.Net.IPAddress address, int port, AsyncCallback callback, object state);
member this.BeginConnect : System.Net.IPAddress * int * AsyncCallback * obj -> IAsyncResult
Public Function BeginConnect (address As IPAddress, port As Integer, callback As AsyncCallback, state As Object) As IAsyncResult

Параметры

address
IPAddress IPAddress IPAddress IPAddress

Адрес IPAddress удаленного узла.The IPAddress of the remote host.

port
Int32 Int32 Int32 Int32

Номер порта удаленного узла.The port number of the remote host.

requestCallback
AsyncCallback AsyncCallback AsyncCallback AsyncCallback

Делегат AsyncCallback, ссылающийся на метод, который следует вызвать по завершении операции подключения.An AsyncCallback delegate that references the method to invoke when the connect operation is complete.

state
Object Object Object Object

Пользовательский объект, содержащий информацию об операции подключения.A user-defined object that contains information about the connect operation. Этот объект передается делегату requestCallback по завершении операции.This object is passed to the requestCallback delegate when the operation is complete.

Возвраты

Объект IAsyncResult, который ссылается на асинхронное подключение.An IAsyncResult that references the asynchronous connection.

Исключения

Произошла ошибка при попытке доступа к сокету.An error occurred when attempting to access the socket.

Объект Socket не входит в состав семейства сокетов.The Socket is not in the socket family.

Номер порта недействителен.The port number is not valid.

Длина параметра address равна нулю.The length of address is zero.

Сокет Socket был переведен в состояние прослушивания путем вызова Listen(Int32), либо асинхронная операция уже выполняется.The Socket has been placed in a listening state by calling Listen(Int32), or an asynchronous operation is already in progress.

Примеры

В следующем примере кода инициируется попытка асинхронного подключения.The following code example initiates an asynchronous connection attempt.

static ManualResetEvent^ allDone = gcnew ManualResetEvent( false );

// handles the completion of the prior asynchronous 
// connect call. the socket is passed via the objectState 
// paramater of BeginConnect().
static void ConnectCallback1( IAsyncResult^ ar )
{
   allDone->Set();
   Socket^ s = dynamic_cast<Socket^>(ar->AsyncState);
   s->EndConnect( ar );
}


public static ManualResetEvent allDone = 
    new ManualResetEvent(false);

// handles the completion of the prior asynchronous 
// connect call. the socket is passed via the objectState 
// paramater of BeginConnect().
public static void ConnectCallback1(IAsyncResult ar)
{
    allDone.Set();
    Socket s = (Socket) ar.AsyncState;
    s.EndConnect(ar);
}
// Asynchronous connect using the host name, resolved via 
// IPAddress
static void BeginConnect1( String^ host, int port )
{
   array<IPAddress^>^IPs = Dns::GetHostAddresses( host );
   Socket^ s = gcnew Socket( AddressFamily::InterNetwork,SocketType::Stream,ProtocolType::Tcp );
   allDone->Reset();
   Console::WriteLine( "Establishing Connection to {0}", host );
   s->BeginConnect( IPs[ 0 ], port, gcnew AsyncCallback( ConnectCallback1 ), s );
   
   // wait here until the connect finishes.  
   // The callback sets allDone.
   allDone->WaitOne();
   Console::WriteLine( "Connection established" );
}


// Asynchronous connect using the host name, resolved via 
// IPAddress
public static void BeginConnect1(string host, int port)
{

    IPAddress[] IPs = Dns.GetHostAddresses(host);

    Socket s = new Socket(AddressFamily.InterNetwork,
        SocketType.Stream,
        ProtocolType.Tcp);

    allDone.Reset();

    Console.WriteLine("Establishing Connection to {0}", 
        host);
    s.BeginConnect(IPs[0], port, 
        new AsyncCallback(ConnectCallback1), s);

    // wait here until the connect finishes.  
    // The callback sets allDone.
    allDone.WaitOne();

    Console.WriteLine("Connection established");

}		

Комментарии

Асинхронный BeginConnect операция должна быть завершена путем вызова EndConnect метод.The asynchronous BeginConnect operation must be completed by calling the EndConnect method. Как правило, вызывается метод requestCallback делегировать.Typically, the method is invoked by the requestCallback delegate.

Этот метод не приводит к блокировке до завершения операции.This method does not block until the operation is complete. Чтобы заблокировать до завершения операции, используйте один из Connect перегрузок метода, или EndConnect.To block until the operation is complete, use one of the Connect method overloads, or EndConnect.

Чтобы отменить ожидающий вызов BeginConnect метод close Socket.To cancel a pending call to the BeginConnect method, close the Socket. Когда Close во время выполнения асинхронной операции, вызывается метод, обратный вызов передается BeginConnect вызывается метод.When the Close method is called while an asynchronous operation is in progress, the callback provided to the BeginConnect method is called. Последующий вызов EndConnect метод вызывает исключение ObjectDisposedException для указания, что операция была отменена.A subsequent call to the EndConnect method will throw an ObjectDisposedException to indicate that the operation has been cancelled.

Подробные сведения об использовании модели асинхронного программирования см. в разделе асинхронный вызов синхронных методовFor detailed information about using the asynchronous programming model, see Calling Synchronous Methods Asynchronously

Примечание

Если вы получили SocketException, используйте SocketException.ErrorCode свойство для получения конкретного кода ошибки.If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. После получения этот код, см. по код ошибки API сокетов Windows версии 2 документации подробное описание ошибки.After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

Примечание

Если этот сокет ранее был отключен, затем BeginConnect должен вызываться в потоке, который не завершит работу до завершения операции.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. Также EndPoint то есть используется должны быть разными.Also the EndPoint that is used must be different.

Примечание

Данный член генерирует сведения трассировки, если в приложении включена трассировка сети.This member outputs trace information when you enable network tracing in your application. Дополнительные сведения см. в разделе сетевая трассировка в .NET Framework.For more information, see Network Tracing in the .NET Framework.

Примечание

Контекст выполнения (контекст безопасности, олицетворенного пользователя и контекст вызова) кэшируется для асинхронной Socket методы.The execution context (the security context, the impersonated user, and the calling context) is cached for the asynchronous Socket methods. После первого использования определенного контекста (определенного асинхронного Socket метод, определенный Socket экземпляра и определенный обратный вызов), для последующего использования этого контекста будет повыситься производительность.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.

Дополнительно

BeginConnect(IPAddress[], Int32, AsyncCallback, Object) BeginConnect(IPAddress[], Int32, AsyncCallback, Object) BeginConnect(IPAddress[], Int32, AsyncCallback, Object) BeginConnect(IPAddress[], Int32, AsyncCallback, Object)

Начинает выполнение асинхронного запроса для подключения к удаленному узлу.Begins an asynchronous request for a remote host connection. узел задается массивом IPAddress и номером порта.The host is specified by an IPAddress array and a port number.

public:
 IAsyncResult ^ BeginConnect(cli::array <System::Net::IPAddress ^> ^ addresses, int port, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginConnect (System.Net.IPAddress[] addresses, int port, AsyncCallback callback, object state);
member this.BeginConnect : System.Net.IPAddress[] * int * AsyncCallback * obj -> IAsyncResult
Public Function BeginConnect (addresses As IPAddress(), port As Integer, callback As AsyncCallback, state As Object) As IAsyncResult

Параметры

addresses
IPAddress[]

По крайней мере, один объект IPAddress, определяющий удаленный узел.At least one IPAddress, designating the remote host.

port
Int32 Int32 Int32 Int32

Номер порта удаленного узла.The port number of the remote host.

requestCallback
AsyncCallback AsyncCallback AsyncCallback AsyncCallback

Делегат AsyncCallback, ссылающийся на метод, который следует вызвать по завершении операции подключения.An AsyncCallback delegate that references the method to invoke when the connect operation is complete.

state
Object Object Object Object

Пользовательский объект, содержащий информацию об операции подключения.A user-defined object that contains information about the connect operation. Этот объект передается делегату requestCallback по завершении операции.This object is passed to the requestCallback delegate when the operation is complete.

Возвраты

Объект IAsyncResult, который ссылается на асинхронные подключения.An IAsyncResult that references the asynchronous connections.

Исключения

Произошла ошибка при попытке доступа к сокету.An error occurred when attempting to access the socket.

Этот метод применим для сокетов, которые используют объект InterNetwork или InterNetworkV6.This method is valid for sockets that use InterNetwork or InterNetworkV6.

Номер порта недействителен.The port number is not valid.

Длина параметра address равна нулю.The length of address is zero.

Сокет Socket был переведен в состояние прослушивания путем вызова Listen(Int32), либо асинхронная операция уже выполняется.The Socket has been placed in a listening state by calling Listen(Int32), or an asynchronous operation is already in progress.

Примеры

В следующем примере кода инициируется попытка асинхронного подключения.The following code example initiates an asynchronous connection attempt.

static ManualResetEvent^ allDone = gcnew ManualResetEvent( false );

// handles the completion of the prior asynchronous 
// connect call. the socket is passed via the objectState 
// paramater of BeginConnect().
static void ConnectCallback1( IAsyncResult^ ar )
{
   allDone->Set();
   Socket^ s = dynamic_cast<Socket^>(ar->AsyncState);
   s->EndConnect( ar );
}


public static ManualResetEvent allDone = 
    new ManualResetEvent(false);

// handles the completion of the prior asynchronous 
// connect call. the socket is passed via the objectState 
// paramater of BeginConnect().
public static void ConnectCallback1(IAsyncResult ar)
{
    allDone.Set();
    Socket s = (Socket) ar.AsyncState;
    s.EndConnect(ar);
}
// Asynchronous connect, using DNS.ResolveToAddresses
static void BeginConnect2( String^ host, int port )
{
   array<IPAddress^>^IPs = Dns::GetHostAddresses( host );
   Socket^ s = gcnew Socket( AddressFamily::InterNetwork,SocketType::Stream,ProtocolType::Tcp );
   allDone->Reset();
   Console::WriteLine( "Establishing Connection to {0}", host );
   s->BeginConnect( IPs, port, gcnew AsyncCallback( ConnectCallback1 ), s );
   
   // wait here until the connect finishes.  The callback 
   // sets allDone.
   allDone->WaitOne();
   Console::WriteLine( "Connection established" );
}



// Asynchronous connect, using DNS.GetHostAddresses
public static void BeginConnect2(string host, int port)
{
    IPAddress[] IPs = Dns.GetHostAddresses(host);

    Socket s = new Socket(AddressFamily.InterNetwork,
        SocketType.Stream,
        ProtocolType.Tcp);

    allDone.Reset();

    Console.WriteLine("Establishing Connection to {0}", 
        host);
    s.BeginConnect(IPs, port, 
        new AsyncCallback(ConnectCallback1), s);

    // wait here until the connect finishes.  The callback 
    // sets allDone.
    allDone.WaitOne();

    Console.WriteLine("Connection established");
}		

Комментарии

Асинхронный BeginConnect операция должна быть завершена путем вызова EndConnect метод.The asynchronous BeginConnect operation must be completed by calling the EndConnect method. Как правило, вызывается метод requestCallback делегировать.Typically, the method is invoked by the requestCallback delegate.

Этот метод не приводит к блокировке до завершения операции.This method does not block until the operation is complete. Чтобы заблокировать до завершения операции, используйте один из Connect перегрузок метода.To block until the operation is complete, use one of the Connect method overloads.

Чтобы отменить ожидающий вызов BeginConnect метод close Socket.To cancel a pending call to the BeginConnect method, close the Socket. Когда Close во время выполнения асинхронной операции, вызывается метод, обратный вызов передается BeginConnect вызывается метод.When the Close method is called while an asynchronous operation is in progress, the callback provided to the BeginConnect method is called. Последующий вызов EndConnect метод вызывает исключение ObjectDisposedException для указания, что операция была отменена.A subsequent call to the EndConnect method will throw an ObjectDisposedException to indicate that the operation has been cancelled.

Подробные сведения об использовании модели асинхронного программирования см. в разделе асинхронный вызов синхронных методов.For detailed information about using the asynchronous programming model, see Calling Synchronous Methods Asynchronously.

Примечание

Если вы получили SocketException, используйте SocketException.ErrorCode свойство для получения конкретного кода ошибки.If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. После получения этот код, см. по код ошибки API сокетов Windows версии 2 документации подробное описание ошибки.After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

Примечание

Если этот сокет ранее был отключен, затем BeginConnect должен вызываться в потоке, который не завершит работу до завершения операции.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. Также EndPoint то есть используется должны быть разными.Also the EndPoint that is used must be different.

Примечание

Данный член генерирует сведения трассировки, если в приложении включена трассировка сети.This member outputs trace information when you enable network tracing in your application. Дополнительные сведения см. в разделе сетевая трассировка в .NET Framework.For more information, see Network Tracing in the .NET Framework.

Примечание

Контекст выполнения (контекст безопасности, олицетворенного пользователя и контекст вызова) кэшируется для асинхронной Socket методы.The execution context (the security context, the impersonated user, and the calling context) is cached for the asynchronous Socket methods. После первого использования определенного контекста (определенного асинхронного Socket метод, определенный Socket экземпляра и определенный обратный вызов), для последующего использования этого контекста будет повыситься производительность.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.

Дополнительно

BeginConnect(String, Int32, AsyncCallback, Object) BeginConnect(String, Int32, AsyncCallback, Object) BeginConnect(String, Int32, AsyncCallback, Object) BeginConnect(String, Int32, AsyncCallback, Object)

Начинает выполнение асинхронного запроса для подключения к удаленному узлу.Begins an asynchronous request for a remote host connection. Узел задается именем узла и номером порта.The host is specified by a host name and a port number.

public:
 IAsyncResult ^ BeginConnect(System::String ^ host, int port, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginConnect (string host, int port, AsyncCallback callback, object state);
member this.BeginConnect : string * int * AsyncCallback * obj -> IAsyncResult
Public Function BeginConnect (host As String, port As Integer, callback As AsyncCallback, state As Object) As IAsyncResult

Параметры

host
String String String String

Имя удаленного узла.The name of the remote host.

port
Int32 Int32 Int32 Int32

Номер порта удаленного узла.The port number of the remote host.

requestCallback
AsyncCallback AsyncCallback AsyncCallback AsyncCallback

Делегат AsyncCallback, ссылающийся на метод, который следует вызвать по завершении операции подключения.An AsyncCallback delegate that references the method to invoke when the connect operation is complete.

state
Object Object Object Object

Пользовательский объект, содержащий информацию об операции подключения.A user-defined object that contains information about the connect operation. Этот объект передается делегату requestCallback по завершении операции.This object is passed to the requestCallback delegate when the operation is complete.

Возвраты

Объект IAsyncResult, который ссылается на асинхронное подключение.An IAsyncResult that references the asynchronous connection.

Исключения

Этот метод применим для сокетов в семействах InterNetwork или InterNetworkV6.This method is valid for sockets in the InterNetwork or InterNetworkV6 families.

Номер порта недействителен.The port number is not valid.

Сокет Socket был переведен в состояние прослушивания путем вызова Listen(Int32), либо асинхронная операция уже выполняется.The Socket has been placed in a listening state by calling Listen(Int32), or an asynchronous operation is already in progress.

Примеры

В следующем примере кода инициируется попытка асинхронного подключения.The following code example initiates an asynchronous connection attempt.

static ManualResetEvent^ allDone = gcnew ManualResetEvent( false );

// handles the completion of the prior asynchronous 
// connect call. the socket is passed via the objectState 
// paramater of BeginConnect().
static void ConnectCallback1( IAsyncResult^ ar )
{
   allDone->Set();
   Socket^ s = dynamic_cast<Socket^>(ar->AsyncState);
   s->EndConnect( ar );
}


public static ManualResetEvent allDone = 
    new ManualResetEvent(false);

// handles the completion of the prior asynchronous 
// connect call. the socket is passed via the objectState 
// paramater of BeginConnect().
public static void ConnectCallback1(IAsyncResult ar)
{
    allDone.Set();
    Socket s = (Socket) ar.AsyncState;
    s.EndConnect(ar);
}
// Asynchronous connect using host name (resolved by the 
// BeginConnect call.)
static void BeginConnect3( String^ host, int port )
{
   Socket^ s = gcnew Socket( AddressFamily::InterNetwork,SocketType::Stream,ProtocolType::Tcp );
   allDone->Reset();
   Console::WriteLine( "Establishing Connection to {0}", host );
   s->BeginConnect( host, port, gcnew AsyncCallback( ConnectCallback1 ), s );
   
   // wait here until the connect finishes.  The callback 
   // sets allDone.
   allDone->WaitOne();
   Console::WriteLine( "Connection established" );
}


// Asynchronous connect using host name (resolved by the 
// BeginConnect call.)
public static void BeginConnect3(string host, int port)
{
    Socket s = new Socket(AddressFamily.InterNetwork,
        SocketType.Stream,
        ProtocolType.Tcp);

    allDone.Reset();

    Console.WriteLine("Establishing Connection to {0}", 
        host);
    s.BeginConnect(host, port, 
        new AsyncCallback(ConnectCallback1), s);

    // wait here until the connect finishes.  The callback 
    // sets allDone.
    allDone.WaitOne();

    Console.WriteLine("Connection established");
}		

Комментарии

Асинхронный BeginConnect операция должна быть завершена путем вызова EndConnect метод.The asynchronous BeginConnect operation must be completed by calling the EndConnect method. Как правило, вызывается метод requestCallback делегировать.Typically, the method is invoked by the requestCallback delegate.

Этот метод не приводит к блокировке до завершения операции.This method does not block until the operation is complete. Чтобы заблокировать до завершения операции, используйте один из Connect перегрузок метода.To block until the operation is complete, use one of the Connect method overloads.

Чтобы отменить ожидающий вызов BeginConnect метод close Socket.To cancel a pending call to the BeginConnect method, close the Socket. Когда Close во время выполнения асинхронной операции, вызывается метод, обратный вызов передается BeginConnect вызывается метод.When the Close method is called while an asynchronous operation is in progress, the callback provided to the BeginConnect method is called. Последующий вызов EndConnect метод вызывает исключение ObjectDisposedException для указания, что операция была отменена.A subsequent call to the EndConnect method will throw an ObjectDisposedException to indicate that the operation has been cancelled.

Подробные сведения об использовании модели асинхронного программирования см. в разделе асинхронный вызов синхронных методовFor detailed information about using the asynchronous programming model, see Calling Synchronous Methods Asynchronously

Примечание

Если вы получили SocketException, используйте SocketException.ErrorCode свойство для получения конкретного кода ошибки.If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. После получения этот код, см. по код ошибки API сокетов Windows версии 2 документации подробное описание ошибки.After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

Примечание

Если этот сокет ранее был отключен, затем BeginConnect должен вызываться в потоке, который не завершит работу до завершения операции.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. Также EndPoint то есть используется должны быть разными.Also the EndPoint that is used must be different.

Примечание

Данный член генерирует сведения трассировки, если в приложении включена трассировка сети.This member outputs trace information when you enable network tracing in your application. Дополнительные сведения см. в разделе сетевая трассировка в .NET Framework.For more information, see Network Tracing in the .NET Framework.

Примечание

Контекст выполнения (контекст безопасности, олицетворенного пользователя и контекст вызова) кэшируется для асинхронной Socket методы.The execution context (the security context, the impersonated user, and the calling context) is cached for the asynchronous Socket methods. После первого использования определенного контекста (определенного асинхронного Socket метод, определенный Socket экземпляра и определенный обратный вызов), для последующего использования этого контекста будет повыситься производительность.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.

Дополнительно

Применяется к