Socket.BeginAccept Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Начинает асинхронную операцию, чтобы принять попытку входящего подключения.
Перегрузки
| BeginAccept(AsyncCallback, Object) |
Начинает асинхронную операцию, чтобы принять попытку входящего подключения. |
| BeginAccept(Int32, AsyncCallback, Object) |
Начинает асинхронную операцию, чтобы принять попытку входящего подключения и получить первый блок данных, посланных клиентским приложением. |
| BeginAccept(Socket, Int32, AsyncCallback, Object) |
Начинает асинхронную операцию, чтобы принять попытку входящего подключения с указанного сокета и получить первый блок данных, посланных клиентским приложением. |
BeginAccept(AsyncCallback, Object)
- Исходный код:
- Socket.cs
- Исходный код:
- Socket.cs
- Исходный код:
- Socket.cs
Начинает асинхронную операцию, чтобы принять попытку входящего подключения.
public:
IAsyncResult ^ BeginAccept(AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginAccept (AsyncCallback? callback, object? state);
public IAsyncResult BeginAccept (AsyncCallback callback, object state);
member this.BeginAccept : AsyncCallback * obj -> IAsyncResult
Public Function BeginAccept (callback As AsyncCallback, state As Object) As IAsyncResult
Параметры
- callback
- AsyncCallback
Делегат AsyncCallback.
- state
- Object
Объект, содержащий сведения о состоянии для этого запроса.
Возвращаемое значение
Объект IAsyncResult, который ссылается на асинхронное создание объекта Socket.
Исключения
Объект Socket закрыт.
Принимающий сокет не производит прослушивание подключений. Необходимо вызвать Bind(EndPoint) и Listen(Int32) до вызова объекта BeginAccept(AsyncCallback, Object).
-или-
Производится связывание принимающего сокета.
Значение параметраreceiveSize меньше 0.
платформа .NET Framework и .NET 5 и более ранних версий: при попытке доступа к сокету произошла ошибка.
Комментарии
Важно!
Это API совместимости. Мы не рекомендуем использовать методы APM (Begin* и End*) для разработки новых приложений. Вместо этого используйте эквиваленты на Taskоснове .
Протоколы, ориентированные на BeginAccept подключение, могут использовать метод , чтобы начать прием входящих попыток подключения. Перед вызовом 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 экземпляра и определенного обратного вызова) последующие использования этого контекста будут наблюдаться повышение производительности.
См. также раздел
- Listen(Int32)
- AsyncCallback
- EndAccept(IAsyncResult)
- Socket
- RemoteEndPoint
- Примеры асинхронных сокетов клиента
- Пример асинхронного сокета сервера
Применяется к
BeginAccept(Int32, AsyncCallback, Object)
- Исходный код:
- Socket.cs
- Исходный код:
- Socket.cs
- Исходный код:
- Socket.cs
Начинает асинхронную операцию, чтобы принять попытку входящего подключения и получить первый блок данных, посланных клиентским приложением.
public:
IAsyncResult ^ BeginAccept(int receiveSize, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginAccept (int receiveSize, AsyncCallback? callback, object? state);
public IAsyncResult BeginAccept (int receiveSize, AsyncCallback callback, object state);
member this.BeginAccept : int * AsyncCallback * obj -> IAsyncResult
Public Function BeginAccept (receiveSize As Integer, callback As AsyncCallback, state As Object) As IAsyncResult
Параметры
- receiveSize
- Int32
Число байтов, которые необходимо принять от отправителя.
- callback
- AsyncCallback
Делегат AsyncCallback.
- state
- Object
Объект, содержащий сведения о состоянии для этого запроса.
Возвращаемое значение
Объект IAsyncResult, который ссылается на асинхронное создание объекта Socket.
Исключения
Объект Socket закрыт.
Принимающий сокет не производит прослушивание подключений. Необходимо вызвать Bind(EndPoint) и Listen(Int32) до вызова объекта BeginAccept(AsyncCallback, Object).
-или-
Производится связывание принимающего сокета.
Значение параметраreceiveSize меньше 0.
платформа .NET Framework и .NET 5 и более ранних версий: при попытке доступа к сокету произошла ошибка.
Комментарии
Важно!
Это API совместимости. Мы не рекомендуем использовать методы APM (Begin* и End*) для разработки новых приложений. Вместо этого используйте эквиваленты на Taskоснове .
Протоколы, ориентированные на BeginAccept подключение, могут использовать метод , чтобы начать прием входящих попыток подключения. Перед вызовом 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 экземпляра и определенного обратного вызова) последующие использования этого контекста будут наблюдаться повышение производительности.
См. также раздел
- Listen(Int32)
- AsyncCallback
- EndAccept(IAsyncResult)
- Socket
- RemoteEndPoint
- Примеры асинхронных сокетов клиента
- Пример асинхронного сокета сервера
Применяется к
BeginAccept(Socket, Int32, AsyncCallback, Object)
- Исходный код:
- Socket.cs
- Исходный код:
- Socket.cs
- Исходный код:
- Socket.cs
Начинает асинхронную операцию, чтобы принять попытку входящего подключения с указанного сокета и получить первый блок данных, посланных клиентским приложением.
public:
IAsyncResult ^ BeginAccept(System::Net::Sockets::Socket ^ acceptSocket, int receiveSize, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginAccept (System.Net.Sockets.Socket? acceptSocket, int receiveSize, AsyncCallback? callback, object? state);
public IAsyncResult BeginAccept (System.Net.Sockets.Socket acceptSocket, int receiveSize, AsyncCallback callback, object state);
member this.BeginAccept : System.Net.Sockets.Socket * int * AsyncCallback * obj -> IAsyncResult
Public Function BeginAccept (acceptSocket As Socket, receiveSize As Integer, callback As AsyncCallback, state As Object) As IAsyncResult
Параметры
- receiveSize
- Int32
Максимальное число принимаемых байтов.
- callback
- AsyncCallback
Делегат AsyncCallback.
- state
- Object
Объект, содержащий сведения о состоянии для этого запроса.
Возвращаемое значение
Объект IAsyncResult, который ссылается на асинхронное создание объекта Socket.
Исключения
Объект Socket закрыт.
Принимающий сокет не производит прослушивание подключений. Необходимо вызвать Bind(EndPoint) и Listen(Int32) до вызова объекта BeginAccept(AsyncCallback, Object).
-или-
Производится связывание принимающего сокета.
Значение параметраreceiveSize меньше 0.
платформа .NET Framework и .NET 5 и более ранних версий: при попытке доступа к сокету произошла ошибка.
Комментарии
Важно!
Это 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 экземпляра и определенного обратного вызова) последующие использования этого контекста будут наблюдаться повышение производительности.
См. также раздел
- Listen(Int32)
- AsyncCallback
- EndAccept(IAsyncResult)
- Socket
- RemoteEndPoint
- Примеры асинхронных сокетов клиента
- Пример асинхронного сокета сервера