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


Socket.BeginReceive Метод

Определение

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

Перегрузки

BeginReceive(Byte[], Int32, Int32, SocketFlags, SocketError, AsyncCallback, Object)

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

BeginReceive(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object)

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

BeginReceive(IList<ArraySegment<Byte>>, SocketFlags, AsyncCallback, Object)

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

BeginReceive(IList<ArraySegment<Byte>>, SocketFlags, SocketError, AsyncCallback, Object)

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

BeginReceive(Byte[], Int32, Int32, SocketFlags, SocketError, AsyncCallback, Object)

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

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

public:
 IAsyncResult ^ BeginReceive(cli::array <System::Byte> ^ buffer, int offset, int size, System::Net::Sockets::SocketFlags socketFlags, [Runtime::InteropServices::Out] System::Net::Sockets::SocketError % errorCode, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult? BeginReceive (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode, AsyncCallback? callback, object? state);
public IAsyncResult BeginReceive (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode, AsyncCallback callback, object state);
member this.BeginReceive : byte[] * int * int * System.Net.Sockets.SocketFlags * SocketError * AsyncCallback * obj -> IAsyncResult
Public Function BeginReceive (buffer As Byte(), offset As Integer, size As Integer, socketFlags As SocketFlags, ByRef errorCode As SocketError, callback As AsyncCallback, state As Object) As IAsyncResult

Параметры

buffer
Byte[]

Массив типа Byte, который является местоположением памяти для полученных данных.

offset
Int32

Место в объекте buffer, выделенное для хранения принимаемых данных.

size
Int32

Количество байтов, которые необходимо получить.

socketFlags
SocketFlags

Поразрядное сочетание значений SocketFlags.

errorCode
SocketError

Объект SocketError, содержащий ошибку сокета.

callback
AsyncCallback

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

state
Object

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

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

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

Исключения

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

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

Объект Socket закрыт.

Значение параметраoffset меньше 0.

-или-

Значение offset превышает длину buffer.

-или-

Значение параметраsize меньше 0.

-или-

Значение size превышает значение, полученное, если отнять от длины buffer значение параметра offset.

Комментарии

Важно!

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

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

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

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

Примечание

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

Примечание

Все операции ввода-вывода, инициированные данным потоком, отменяются при выходе из этого потока. Ожидающая асинхронная операция может завершиться ошибкой, если поток завершится до завершения операции.

Примечание

state — это создание экземпляра определяемого пользователем класса.

Примечание

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

Примечание

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

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

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

BeginReceive(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object)

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

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

public:
 IAsyncResult ^ BeginReceive(cli::array <System::Byte> ^ buffer, int offset, int size, System::Net::Sockets::SocketFlags socketFlags, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginReceive (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, AsyncCallback? callback, object? state);
public IAsyncResult BeginReceive (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, AsyncCallback callback, object state);
member this.BeginReceive : byte[] * int * int * System.Net.Sockets.SocketFlags * AsyncCallback * obj -> IAsyncResult
Public Function BeginReceive (buffer As Byte(), offset As Integer, size As Integer, socketFlags As SocketFlags, callback As AsyncCallback, state As Object) As IAsyncResult

Параметры

buffer
Byte[]

Массив типа Byte, который является местоположением памяти для полученных данных.

offset
Int32

Отсчитываемая с нуля позиция в параметре buffer, начиная с которой хранятся принятые данные.

size
Int32

Количество байтов, которые необходимо получить.

socketFlags
SocketFlags

Поразрядное сочетание значений SocketFlags.

callback
AsyncCallback

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

state
Object

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

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

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

Исключения

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

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

Объект Socket закрыт.

Значение параметраoffset меньше 0.

-или-

Значение offset превышает длину buffer.

-или-

Значение параметраsize меньше 0.

-или-

Значение size превышает значение, полученное, если отнять от длины buffer значение параметра offset.

Комментарии

Важно!

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

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

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

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

Примечание

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

Примечание

Все операции ввода-вывода, инициированные данным потоком, отменяются при выходе из этого потока. Ожидающая асинхронная операция может завершиться ошибкой, если поток завершится до завершения операции.

Примечание

state — это создание экземпляра определяемого пользователем класса.

Примечание

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

Примечание

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

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

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

BeginReceive(IList<ArraySegment<Byte>>, SocketFlags, AsyncCallback, Object)

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

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

public:
 IAsyncResult ^ BeginReceive(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers, System::Net::Sockets::SocketFlags socketFlags, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginReceive (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags, AsyncCallback? callback, object? state);
public IAsyncResult BeginReceive (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags, AsyncCallback callback, object state);
member this.BeginReceive : System.Collections.Generic.IList<ArraySegment<byte>> * System.Net.Sockets.SocketFlags * AsyncCallback * obj -> IAsyncResult
Public Function BeginReceive (buffers As IList(Of ArraySegment(Of Byte)), socketFlags As SocketFlags, callback As AsyncCallback, state As Object) As IAsyncResult

Параметры

buffers
IList<ArraySegment<Byte>>

Массив типа Byte, который является местоположением памяти для полученных данных.

socketFlags
SocketFlags

Поразрядное сочетание значений SocketFlags.

callback
AsyncCallback

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

state
Object

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

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

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

Исключения

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

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

Объект Socket закрыт.

Комментарии

Важно!

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

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

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

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

Примечание

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

Примечание

Все операции ввода-вывода, инициированные данным потоком, отменяются при выходе из этого потока. Ожидающая асинхронная операция может завершиться ошибкой, если поток завершается до завершения операции.

Примечание

state — это экземпляр пользовательского класса.

Примечание

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

Примечание

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

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

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

BeginReceive(IList<ArraySegment<Byte>>, SocketFlags, SocketError, AsyncCallback, Object)

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

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

public:
 IAsyncResult ^ BeginReceive(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers, System::Net::Sockets::SocketFlags socketFlags, [Runtime::InteropServices::Out] System::Net::Sockets::SocketError % errorCode, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult? BeginReceive (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode, AsyncCallback? callback, object? state);
public IAsyncResult BeginReceive (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode, AsyncCallback callback, object state);
member this.BeginReceive : System.Collections.Generic.IList<ArraySegment<byte>> * System.Net.Sockets.SocketFlags * SocketError * AsyncCallback * obj -> IAsyncResult
Public Function BeginReceive (buffers As IList(Of ArraySegment(Of Byte)), socketFlags As SocketFlags, ByRef errorCode As SocketError, callback As AsyncCallback, state As Object) As IAsyncResult

Параметры

buffers
IList<ArraySegment<Byte>>

Массив типа Byte, который является местоположением памяти для полученных данных.

socketFlags
SocketFlags

Поразрядное сочетание значений SocketFlags.

errorCode
SocketError

Объект SocketError, содержащий ошибку сокета.

callback
AsyncCallback

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

state
Object

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

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

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

Исключения

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

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

Объект Socket закрыт.

Комментарии

Важно!

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

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

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

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

Примечание

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

Примечание

Все операции ввода-вывода, инициированные данным потоком, отменяются при выходе из этого потока. Ожидающая асинхронная операция может завершиться ошибкой, если поток завершается до завершения операции.

Примечание

state — это экземпляр пользовательского класса.

Примечание

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

Примечание

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

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

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