Socket.BeginAccept Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Начинает асинхронную операцию для принятия входящей попытки подключения.
Перегрузки
| Имя | Описание |
|---|---|
| BeginAccept(AsyncCallback, Object) |
Начинает асинхронную операцию для принятия входящей попытки подключения. |
| BeginAccept(Int32, AsyncCallback, Object) |
Начинает асинхронную операцию, чтобы принять входящие попытки подключения и получает первый блок данных, отправленных клиентским приложением. |
| BeginAccept(Socket, Int32, AsyncCallback, Object) |
Начинает асинхронную операцию, чтобы принять входящие попытки подключения из указанного сокета и получает первый блок данных, отправленных клиентским приложением. |
BeginAccept(AsyncCallback, Object)
- Исходный код:
- Socket.cs
- Исходный код:
- Socket.cs
- Исходный код:
- 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).
–или–
Принятый сокет привязан.
Только .NET Framework и .NET 5 и более ранних версий: при попытке доступа к сокету произошла ошибка.
Комментарии
Это важно
Это API совместимости. Мы не рекомендуем использовать методы APM (Begin* и End*) для новой разработки. Вместо этого используйте Taskэквиваленты на основе.
Протоколы, ориентированные на подключение, могут использовать BeginAccept метод для начала приема входящих попыток подключения. Перед вызовом BeginAcceptListen метода необходимо вызвать метод для прослушивания и очереди входящих запросов на подключение.
Вы можете передать обратный вызов, который реализуется AsyncCallbackBeginAccept для получения уведомления о завершении операции принятия. Обратите внимание, что если базовый сетевой стек завершает операцию синхронно, обратный вызов может выполняться во время вызова 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
- Исходный код:
- 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 метод для начала приема входящих попыток подключения. Перед вызовом BeginAcceptListen метода необходимо вызвать метод для прослушивания и очереди входящих запросов на подключение.
Вы можете передать обратный вызов, который реализуется AsyncCallbackBeginAccept для получения уведомления о завершении операции принятия. Обратите внимание, что если базовый сетевой стек завершает операцию синхронно, обратный вызов может выполняться во время вызова 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
- Исходный код:
- 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 , даже если она может завершиться синхронно. Перед вызовом BeginAcceptListen метода необходимо вызвать метод для прослушивания и очереди входящих запросов на подключение.
Вы можете передать обратный вызов, который реализуется AsyncCallbackBeginAccept для получения уведомления о завершении операции принятия. Обратите внимание, что если базовый сетевой стек завершает операцию синхронно, обратный вызов может выполняться во время вызова 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
- Пример асинхронного сокета клиента
- Пример сокета асинхронного сервера