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
Параметры
- 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 экземпляра и определенного обратного вызова) последующие использования этого контекста будут наблюдаться повышение производительности.
См. также раздел
- AsyncCallback
- EndConnect(IAsyncResult)
- BeginSendTo(Byte[], Int32, Int32, SocketFlags, EndPoint, AsyncCallback, Object)
- BeginReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint, AsyncCallback, Object)
- Маршалинг делегата как метода обратного вызова
- Примеры асинхронных сокетов клиента
- Пример асинхронного сокета сервера
Применяется к
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
Параметры
- 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 экземпляра и определенного обратного вызова) последующие использования этого контекста будут наблюдаться повышение производительности.
См. также раздел
- AsyncCallback
- EndConnect(IAsyncResult)
- BeginSendTo(Byte[], Int32, Int32, SocketFlags, EndPoint, AsyncCallback, Object)
- BeginReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint, AsyncCallback, Object)
- Маршалинг делегата как метода обратного вызова
- Примеры асинхронных сокетов клиента
- Пример асинхронного сокета сервера
Применяется к
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
Параметры
- 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 экземпляра и определенного обратного вызова) последующие использования этого контекста будут наблюдаться повышение производительности.
См. также раздел
- AsyncCallback
- EndConnect(IAsyncResult)
- BeginSendTo(Byte[], Int32, Int32, SocketFlags, EndPoint, AsyncCallback, Object)
- BeginReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint, AsyncCallback, Object)
- Маршалинг делегата как метода обратного вызова
- Примеры асинхронных сокетов клиента
- Пример асинхронного сокета сервера
Применяется к
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 экземпляра и определенного обратного вызова) последующие использования этого контекста будут наблюдаться повышение производительности.
См. также раздел
- AsyncCallback
- EndConnect(IAsyncResult)
- BeginSendTo(Byte[], Int32, Int32, SocketFlags, EndPoint, AsyncCallback, Object)
- BeginReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint, AsyncCallback, Object)
- Маршалинг делегата как метода обратного вызова
- Примеры асинхронных сокетов клиента
- Пример асинхронного сокета сервера