Поделиться через


Socket.BeginConnect Метод

Определение

Начинает выполнение асинхронного запроса для подключения к удаленному узлу.

Перегрузки

BeginConnect(EndPoint, AsyncCallback, Object)

Начинает выполнение асинхронного запроса для подключения к удаленному узлу.

BeginConnect(IPAddress, Int32, AsyncCallback, Object)

Начинает выполнение асинхронного запроса для подключения к удаленному узлу. узел задается объектом IPAddress и номером порта.

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

Начинает выполнение асинхронного запроса для подключения к удаленному узлу. узел задается массивом IPAddress и номером порта.

BeginConnect(String, Int32, AsyncCallback, Object)

Начинает выполнение асинхронного запроса для подключения к удаленному узлу. Узел задается именем узла и номером порта.

BeginConnect(EndPoint, AsyncCallback, Object)

Исходный код:
Socket.cs
Исходный код:
Socket.cs
Исходный код:
Socket.cs

Начинает выполнение асинхронного запроса для подключения к удаленному узлу.

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

Параметры

remoteEP
EndPoint

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

callback
AsyncCallback

Делегат AsyncCallback.

state
Object

Объект, содержащий сведения о состоянии для этого запроса.

Возвращаемое значение

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

Исключения

remoteEP имеет значение null.

платформа .NET Framework и .NET 5 и более ранних версий: при попытке доступа к сокету произошла ошибка.

Socket был закрыт.

Вызывающий объект, находящийся выше в стеке вызовов, не имеет разрешения на запрошенную операцию.

Сокет Socket был переведен в состояние прослушивания путем вызова Listen(Int32), либо асинхронная операция уже выполняется.

Комментарии

Важно!

Это API совместимости. Мы не рекомендуем использовать методы APM (Begin* и End*) для новой разработки. Вместо этого используйте эквиваленты на Taskоснове .

Протоколы, ориентированные на подключение, могут использовать BeginAccept метод , чтобы начать прием входящих попыток подключения. Результирующая операция принятия представлена возвращаемым IAsyncResult , даже если она может завершиться синхронно. Перед вызовом BeginAccept метода необходимо вызвать метод для прослушивания и постановки Listen в очередь входящих запросов на подключение.

Вы можете передать обратный вызов, который реализует AsyncCallback , BeginAccept чтобы получать уведомления о завершении операции принятия. Обратите внимание, что если базовый сетевой стек выполняет операцию синхронно, обратный вызов может выполняться во время вызова BeginAccept. В этом случае свойству CompletedSynchronously возвращаемого объекта будет присвоено IAsyncResult значение true , чтобы указать, что метод завершился синхронно. AsyncState Используйте свойство объекта , IAsyncResult чтобы получить объект состояния, переданный BeginAccept в метод .

Операция BeginAccept должна быть завершена путем вызова EndAccept метода . Как правило, метод вызывается предоставленным делегатом AsyncCallback . EndAccept блокирует вызывающий поток до завершения операции.

Чтобы отменить ожидающий вызов BeginAccept метода , закройте Socket. При вызове Close метода во время выполнения асинхронной операции вызывается обратный вызов, предоставляемый методу BeginAccept . Последующий вызов EndAccept метода вызовет ObjectDisposedException (до .NET 7) или SocketException (в .NET 7+), чтобы указать, что операция была отменена.

Примечание

Чтобы определить сетевой адрес и номер порта удаленного узла, можно использовать RemoteEndPoint свойство возвращаемого Socket объекта .

Примечание

Если вы получаете SocketException, используйте SocketException.ErrorCode свойство , чтобы получить конкретный код ошибки.

Примечание

Данный член генерирует сведения трассировки, если в приложении включена трассировка сети. Дополнительные сведения см. в статье Трассировка сети в платформа .NET Framework.

Примечание

Контекст выполнения (контекст безопасности, олицетворенный пользователь и контекст вызова) кэшируется для асинхронных Socket методов. После первого использования определенного контекста (конкретного асинхронного Socket метода, конкретного Socket экземпляра и определенного обратного вызова) последующие использования этого контекста будут наблюдаться повышение производительности.

См. также раздел

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

BeginConnect(IPAddress, Int32, AsyncCallback, Object)

Исходный код:
Socket.cs
Исходный код:
Socket.cs
Исходный код:
Socket.cs

Начинает выполнение асинхронного запроса для подключения к удаленному узлу. узел задается объектом IPAddress и номером порта.

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

Параметры

address
IPAddress

Адрес IPAddress удаленного узла.

port
Int32

Номер порта удаленного узла.

requestCallback
AsyncCallback

Делегат AsyncCallback, ссылающийся на метод, вызываемый по завершении операции подключения.

state
Object

Пользовательский объект, содержащий информацию об операции подключения. Этот объект передается делегату requestCallback по завершении операции.

Возвращаемое значение

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

Исключения

address имеет значение null.

платформа .NET Framework и .NET 5 и более ранних версий: при попытке доступа к сокету произошла ошибка.

Socket был закрыт.

Объект Socket не входит в состав семейства сокетов.

Номер порта недействителен.

Длина параметра address равна нулю.

Сокет Socket был переведен в состояние прослушивания путем вызова Listen(Int32), либо асинхронная операция уже выполняется.

Комментарии

Важно!

Это API совместимости. Мы не рекомендуем использовать методы APM (Begin* и End*) для новой разработки. Вместо этого используйте эквиваленты на Taskоснове .

Если вы используете протокол, ориентированный на подключение, метод запускает асинхронный запрос на подключение к конечномуpoitу, BeginConnect указанному параметром remoteEP . Если вы используете протокол без подключения, BeginConnect устанавливает удаленный узел по умолчанию.

Вы можете передать обратный вызов, который реализует AsyncCallback , BeginConnect чтобы получать уведомления о завершении операции подключения. Обратите внимание, что если базовый сетевой стек выполняет операцию синхронно, обратный вызов может выполняться во время вызова BeginConnect. В этом случае свойству CompletedSynchronously возвращаемого объекта будет присвоено IAsyncResult значение true , чтобы указать, что метод завершился синхронно. AsyncState Используйте свойство объекта , IAsyncResult чтобы получить объект состояния, переданный BeginConnect в метод .

Операция BeginConnect должна быть завершена путем вызова EndConnect метода . Как правило, метод вызывается предоставленным делегатом AsyncCallback . EndConnect блокирует вызывающий поток до завершения операции.

Если вы используете протокол без подключения, например UDP, вам не нужно вызывать перед BeginConnect отправкой и получением данных. Для взаимодействия с удаленным узлом можно использовать BeginSendTo и BeginReceiveFrom . При вызове BeginConnectвсе датаграммы, поступающие с адреса, отличного от указанного по умолчанию, будут удалены. Если вы хотите задать для удаленного узла по умолчанию широковещательный адрес, необходимо сначала вызвать SetSocketOption и задать для параметра Broadcast значение true. Если вы не можете, BeginConnect вызовет исключение SocketException.

Если вы используете протокол, ориентированный на подключение, и не вызываете Bind перед вызовом BeginConnect, базовый поставщик услуг назначит наиболее подходящий адрес локальной сети и номер порта. Если вы используете протокол без подключения, поставщик услуг не будет назначать адрес локальной сети и номер порта, пока вы не вызовете BeginSend метод или ReceiveFrom . Если вы хотите изменить удаленный узел по умолчанию, снова вызовите BeginConnect метод с нужной конечной точкой.

Чтобы отменить ожидающий вызов BeginConnect метода , закройте Socket. При вызове Close метода во время выполнения асинхронной операции вызывается обратный вызов, предоставляемый методу BeginConnect . Последующий вызов EndConnect метода вызовет ObjectDisposedException (до .NET 7) или SocketException (в .NET 7+), чтобы указать, что операция была отменена.

Примечание

Если вы получаете SocketException, используйте SocketException.ErrorCode свойство , чтобы получить конкретный код ошибки.

Примечание

Если этот сокет ранее был отключен, его BeginConnect необходимо вызвать в потоке, который не завершится до завершения операции. Это ограничение базового поставщика.

Примечание

Данный член генерирует сведения трассировки, если в приложении включена трассировка сети. Дополнительные сведения см. в статье Трассировка сети в платформа .NET Framework.

Примечание

Контекст выполнения (контекст безопасности, олицетворенный пользователь и контекст вызова) кэшируется для асинхронных Socket методов. После первого использования определенного контекста (конкретного асинхронного Socket метода, конкретного Socket экземпляра и определенного обратного вызова) последующие использования этого контекста будут наблюдаться повышение производительности.

См. также раздел

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

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

Исходный код:
Socket.cs
Исходный код:
Socket.cs
Исходный код:
Socket.cs

Начинает выполнение асинхронного запроса для подключения к удаленному узлу. узел задается массивом IPAddress и номером порта.

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

Параметры

addresses
IPAddress[]

По крайней мере, один объект IPAddress, определяющий удаленный узел.

port
Int32

Номер порта удаленного узла.

requestCallback
AsyncCallback

Делегат AsyncCallback, ссылающийся на метод, вызываемый по завершении операции подключения.

state
Object

Пользовательский объект, содержащий информацию об операции подключения. Этот объект передается делегату requestCallback по завершении операции.

Возвращаемое значение

IAsyncResult, который ссылается на асинхронное подключение.

Исключения

addresses имеет значение null.

платформа .NET Framework и .NET 5 и более ранних версий: при попытке доступа к сокету произошла ошибка.

Socket был закрыт.

Этот метод применим для сокетов, которые используют объект InterNetwork или InterNetworkV6.

Недействительный номер порта.

Длина параметра address равна нулю.

Сокет Socket был переведен в состояние прослушивания путем вызова Listen(Int32), либо асинхронная операция уже выполняется.

Комментарии

Важно!

Это API совместимости. Мы не рекомендуем использовать методы APM (Begin* и End*) для новой разработки. Вместо этого используйте эквиваленты на Taskоснове .

Если вы используете протокол, ориентированный на подключение, метод запускает асинхронный запрос на подключение к конечномуpoitу, BeginConnect указанному параметром remoteEP . Если вы используете протокол без подключения, BeginConnect устанавливает удаленный узел по умолчанию.

Вы можете передать обратный вызов, который реализует AsyncCallback , BeginConnect чтобы получать уведомления о завершении операции подключения. Обратите внимание, что если базовый сетевой стек выполняет операцию синхронно, обратный вызов может выполняться во время вызова BeginConnect. В этом случае свойству CompletedSynchronously возвращаемого объекта будет присвоено IAsyncResult значение true , чтобы указать, что метод завершился синхронно. AsyncState Используйте свойство объекта , IAsyncResult чтобы получить объект состояния, переданный BeginConnect в метод .

Операция BeginConnect должна быть завершена путем вызова EndConnect метода . Как правило, метод вызывается предоставленным делегатом AsyncCallback . EndConnect блокирует вызывающий поток до завершения операции.

Если вы используете протокол без подключения, например UDP, вам не нужно вызывать перед BeginConnect отправкой и получением данных. Для взаимодействия с удаленным узлом можно использовать BeginSendTo и BeginReceiveFrom . При вызове BeginConnectвсе датаграммы, поступающие с адреса, отличного от указанного по умолчанию, будут удалены. Если вы хотите задать для удаленного узла по умолчанию широковещательный адрес, необходимо сначала вызвать SetSocketOption и задать для параметра Broadcast значение true. Если вы не можете, BeginConnect вызовет исключение SocketException.

Если вы используете протокол, ориентированный на подключение, и не вызываете Bind перед вызовом BeginConnect, базовый поставщик услуг назначит наиболее подходящий адрес локальной сети и номер порта. Если вы используете протокол без подключения, поставщик услуг не будет назначать адрес локальной сети и номер порта, пока вы не вызовете BeginSend метод или ReceiveFrom . Если вы хотите изменить удаленный узел по умолчанию, снова вызовите BeginConnect метод с нужной конечной точкой.

Чтобы отменить ожидающий вызов BeginConnect метода , закройте Socket. При вызове Close метода во время выполнения асинхронной операции вызывается обратный вызов, предоставляемый методу BeginConnect . Последующий вызов EndConnect метода вызовет ObjectDisposedException (до .NET 7) или SocketException (в .NET 7+), чтобы указать, что операция была отменена.

Примечание

Если вы получаете SocketException, используйте SocketException.ErrorCode свойство , чтобы получить конкретный код ошибки.

Примечание

Если этот сокет ранее был отключен, его BeginConnect необходимо вызвать в потоке, который не завершится до завершения операции. Это ограничение базового поставщика.

Примечание

Данный член генерирует сведения трассировки, если в приложении включена трассировка сети. Дополнительные сведения см. в статье Трассировка сети в платформа .NET Framework.

Примечание

Контекст выполнения (контекст безопасности, олицетворенный пользователь и контекст вызова) кэшируется для асинхронных Socket методов. После первого использования определенного контекста (конкретного асинхронного Socket метода, конкретного Socket экземпляра и определенного обратного вызова) последующие использования этого контекста будут наблюдаться повышение производительности.

См. также раздел

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

BeginConnect(String, Int32, AsyncCallback, Object)

Исходный код:
Socket.cs
Исходный код:
Socket.cs
Исходный код:
Socket.cs

Начинает выполнение асинхронного запроса для подключения к удаленному узлу. Узел задается именем узла и номером порта.

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

Параметры

host
String

Имя удаленного узла.

port
Int32

Номер порта удаленного узла.

requestCallback
AsyncCallback

Делегат AsyncCallback, ссылающийся на метод, вызываемый по завершении операции подключения.

state
Object

Пользовательский объект, содержащий информацию об операции подключения. Этот объект передается делегату requestCallback по завершении операции.

Возвращаемое значение

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

Исключения

host имеет значение null.

Socket был закрыт.

Этот метод допустим для сокетов в семействах InterNetwork или InterNetworkV6 .

Недействительный номер порта.

Сокет Socket был переведен в состояние прослушивания путем вызова Listen(Int32), либо асинхронная операция уже выполняется.

Комментарии

Важно!

Это API совместимости. Мы не рекомендуем использовать методы APM (Begin* и End*) для новой разработки. Вместо этого используйте эквиваленты на Taskоснове .

Если вы используете протокол, ориентированный на подключение, метод запускает асинхронный запрос на подключение к конечномуpoitу, BeginConnect указанному параметром remoteEP . Если вы используете протокол без подключения, BeginConnect устанавливает удаленный узел по умолчанию.

Вы можете передать обратный вызов, который реализует AsyncCallback , BeginConnect чтобы получать уведомления о завершении операции подключения. Обратите внимание, что если базовый сетевой стек выполняет операцию синхронно, обратный вызов может выполняться во время вызова BeginConnect. В этом случае свойству CompletedSynchronously возвращаемого объекта будет присвоено IAsyncResult значение true , чтобы указать, что метод завершился синхронно. AsyncState Используйте свойство объекта , IAsyncResult чтобы получить объект состояния, переданный BeginConnect в метод .

Операция BeginConnect должна быть завершена путем вызова EndConnect метода . Как правило, метод вызывается предоставленным делегатом AsyncCallback . EndConnect блокирует вызывающий поток до завершения операции.

Если вы используете протокол без подключения, например UDP, вам не нужно вызывать перед BeginConnect отправкой и получением данных. Для взаимодействия с удаленным узлом можно использовать BeginSendTo и BeginReceiveFrom . При вызове BeginConnectвсе датаграммы, поступающие с адреса, отличного от указанного по умолчанию, будут удалены. Если вы хотите задать для удаленного узла по умолчанию широковещательный адрес, необходимо сначала вызвать SetSocketOption и задать для параметра Broadcast значение true. Если вы не можете, BeginConnect вызовет исключение SocketException.

Если вы используете протокол, ориентированный на подключение, и не вызываете Bind перед вызовом BeginConnect, базовый поставщик услуг назначит наиболее подходящий адрес локальной сети и номер порта. Если вы используете протокол без подключения, поставщик услуг не будет назначать адрес локальной сети и номер порта, пока вы не вызовете BeginSend метод или ReceiveFrom . Если вы хотите изменить удаленный узел по умолчанию, снова вызовите BeginConnect метод с нужной конечной точкой.

Чтобы отменить ожидающий вызов BeginConnect метода , закройте Socket. При вызове Close метода во время выполнения асинхронной операции вызывается обратный вызов, предоставляемый методу BeginConnect . Последующий вызов EndConnect метода вызовет ObjectDisposedException (до .NET 7) или SocketException (в .NET 7+), чтобы указать, что операция была отменена.

Примечание

Если вы получаете SocketException, используйте SocketException.ErrorCode свойство , чтобы получить конкретный код ошибки.

Примечание

Если этот сокет ранее был отключен, то BeginConnect должен вызываться в потоке, который не будет завершен до завершения операции. Это ограничение базового поставщика.

Примечание

Данный член генерирует сведения трассировки, если в приложении включена трассировка сети. Дополнительные сведения см. в статье Трассировка сети в платформа .NET Framework.

Примечание

Контекст выполнения (контекст безопасности, олицетворенный пользователь и контекст вызова) кэшируется для асинхронных Socket методов. После первого использования определенного контекста (конкретного асинхронного Socket метода, конкретного Socket экземпляра и определенного обратного вызова) последующие использования этого контекста будут наблюдаться повышение производительности.

См. также раздел

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