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 экземпляра и определенного обратного вызова) последующие использования этого контекста будут наблюдаться повышение производительности.

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

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

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 экземпляра и определенного обратного вызова) последующие использования этого контекста будут наблюдаться повышение производительности.

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

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

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

Параметры

acceptSocket
Socket

Принятый объект Socket. Это значение может быть равно null.

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 экземпляра и определенного обратного вызова) последующие использования этого контекста будут наблюдаться повышение производительности.

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

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