Socket.Receive Метод

Определение

Получает данные из связанного объекта Socket.

Перегрузки

Receive(Byte[], Int32, Int32, SocketFlags, SocketError)

Получает данные из связанного объекта Socket в приемный буфер, используя заданный объект SocketFlags.

Receive(Span<Byte>, SocketFlags, SocketError)

Получает данные из связанного объекта Socket в приемный буфер, используя заданный объект SocketFlags.

Receive(IList<ArraySegment<Byte>>, SocketFlags, SocketError)

Получает данные из связанного объекта Socket в список приемных буферов, используя заданный объект SocketFlags.

Receive(Byte[], Int32, SocketFlags)

Получает указанное число байтов данных из связанного объекта Socket в приемный буфер, используя заданный объект SocketFlags.

Receive(Span<Byte>, SocketFlags)

Получает данные из связанного объекта Socket в приемный буфер, используя заданный объект SocketFlags.

Receive(Byte[], Int32, Int32, SocketFlags)

Получает указанное число байтов данных из связанного объекта Socket в приемный буфер с указанной позиции смещения, используя заданный объект SocketFlags.

Receive(Byte[], SocketFlags)

Получает данные из связанного объекта Socket в приемный буфер, используя заданный объект SocketFlags.

Receive(Span<Byte>)

Возвращает данные из связанного объекта Socket в приемный буфер.

Receive(IList<ArraySegment<Byte>>)

Получает данные из связанного объекта Socket в список приемных буферов.

Receive(Byte[])

Возвращает данные из связанного объекта Socket в приемный буфер.

Receive(IList<ArraySegment<Byte>>, SocketFlags)

Получает данные из связанного объекта Socket в список приемных буферов, используя заданный объект SocketFlags.

Receive(Byte[], Int32, Int32, SocketFlags, SocketError)

Получает данные из связанного объекта Socket в приемный буфер, используя заданный объект SocketFlags.

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

Параметры

buffer
Byte[]

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

offset
Int32

Позиция в параметре buffer для хранения полученных данных.

size
Int32

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

socketFlags
SocketFlags

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

errorCode
SocketError

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

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

Int32

Количество полученных байтов.

Исключения

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

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

-или-

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

-или-

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

-или-

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

socketFlags — недопустимое сочетание значений.

-или-

Свойство LocalEndPoint не задано.

-или-

Произошла ошибка операционной системы при доступе к Socket.

Socket был закрыт.

Вызывающий оператор в стеке вызовов не имеет необходимых разрешений.

Комментарии

Метод Receive считывает данные в параметр буфера и возвращает число байтов, которые успешно считываются. Вы можете вызывать Receive как сокеты, ориентированные на подключение, так и без подключения.

Если вы используете протокол, ориентированный на подключение, необходимо либо вызвать Connect подключение к удаленному узлу, либо Accept принять входящее подключение перед вызовом Receive. Метод Receive будет считывать только данные, поступающие с удаленного узла, установленного в методе или Accept из удаленного Connect узла. Если вы используете протокол без подключения, можно также использовать ReceiveFrom этот метод. ReceiveFrom позволяет получать данные, поступающие от любого узла.

Если данные недоступны для чтения, метод блокируется до тех пор, Receive пока не будут доступны данные, если не задано значение времени ожидания с помощью Socket.ReceiveTimeout. Если превышено значение времени ожидания, Receive вызов вызовет исключение SocketException. Если вы находитесь в режиме без блокировки и в буфере стека протокола отсутствуют данные, Receive метод завершится немедленно и вызовет исключение SocketException. Произошла ошибка при попытке доступа к сокету. См. примечания ниже. Свойство можно использовать для Available определения доступности данных для чтения. Если Available значение не равно нулю, повторите операцию получения.

Если вы используете подключение Socket, Receive метод будет считывать столько данных, сколько доступно, до количества байтов, указанных параметром размера. Если удаленный узел завершает Socket подключение к методу Shutdown и получает все доступные данные, Receive метод завершается немедленно и возвращает ноль байтов.

При использовании бессерверного SocketReceive подключения считывает первую диаграмму данных в очереди из адреса назначения, указанного в методеConnect. Если полученная датаграмма превышает размер buffer параметра, заполняется первой частью сообщения, buffer лишние данные теряются и SocketException возникает исключение.

Примечание

При получении SocketExceptionсвойства используйте SocketException.ErrorCode свойство для получения определенного кода ошибки. Получив этот код, ознакомьтесь с документацией по коду ошибки API Windows Sockets версии 2, чтобы получить подробное описание ошибки.

Примечание

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

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

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

Receive(Span<Byte>, SocketFlags, SocketError)

Получает данные из связанного объекта Socket в приемный буфер, используя заданный объект SocketFlags.

public:
 int Receive(Span<System::Byte> buffer, System::Net::Sockets::SocketFlags socketFlags, [Runtime::InteropServices::Out] System::Net::Sockets::SocketError % errorCode);
public int Receive (Span<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode);
member this.Receive : Span<byte> * System.Net.Sockets.SocketFlags * SocketError -> int
Public Function Receive (buffer As Span(Of Byte), socketFlags As SocketFlags, ByRef errorCode As SocketError) As Integer

Параметры

buffer
Span<Byte>

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

socketFlags
SocketFlags

Побитовое сочетание значений перечисления, которое задает поведение получения и отправки.

errorCode
SocketError

При возврате из этого метода содержит одно из значений перечисления, которое определяет коды ошибок для сокета.

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

Int32

Количество полученных байтов.

Исключения

Произошла ошибка при попытке доступа к сокету.

Socket был закрыт.

Вызывающий оператор в стеке вызовов не имеет необходимых разрешений.

Комментарии

Метод Receive считывает данные в параметр буфера и возвращает число байтов, которые успешно считываются. Вы можете вызывать Receive как сокеты, ориентированные на подключение, так и без подключения.

Эта перегрузка требует только предоставления буфера получения. По умолчанию смещение буфера равно 0, размер по умолчанию имеет длину параметра буфера и SocketFlags значение по умолчанию None.

Если вы используете протокол, ориентированный на подключение, необходимо либо вызвать Connect установку подключения к удаленному узлу, либо Accept принять входящее подключение перед вызовом Receive. Метод Receive будет считывать только данные, поступающие с удаленного узла, установленного в методе или Accept из удаленного Connect узла. Если вы используете протокол без подключения, можно также использовать ReceiveFrom этот метод. ReceiveFrom позволяет получать данные, поступающие от любого узла.

Если данные недоступны для чтения, метод блокируется до тех пор, Receive пока не будут доступны данные, если не задано значение времени ожидания с помощью Socket.ReceiveTimeout. При превышении Receive значения времени ожидания вызов вызовет исключение SocketException. Если вы находитесь в режиме без блокировки и в буфере стека протокола отсутствуют данные, Receive метод завершится немедленно и вызовет исключение SocketException. Свойство можно использовать для Available определения доступности данных для чтения. Если Available значение не равно нулю, повторите операцию получения.

Если вы используете подключение Socket, метод будет считывать столько данных, Receive сколько доступно, вплоть до размера буфера. Если удаленный узел завершает Socket подключение к методу Shutdown и получает все доступные данные, Receive метод завершается немедленно и возвращает ноль байтов.

Если вы используете бессерверное Socketподключение, Receive будет считывать первую диаграмму данных в очереди из адреса назначения, указанного в методе Connect . Если полученная датаграмма превышает размер buffer параметра, заполняется первой частью сообщения, buffer лишние данные теряются и SocketException возникает исключение.

Примечание

При получении SocketExceptionсвойства используйте SocketException.ErrorCode свойство для получения определенного кода ошибки. Получив этот код, ознакомьтесь с документацией по коду ошибки API Windows Sockets версии 2, чтобы получить подробное описание ошибки.

Примечание

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

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

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

Receive(IList<ArraySegment<Byte>>, SocketFlags, SocketError)

Важно!

Этот API несовместим с CLS.

Альтернативный вариант, совместимый с CLS
System.Net.Sockets.Socket.Receive(Byte[], SocketFlags)

Получает данные из связанного объекта Socket в список приемных буферов, используя заданный объект SocketFlags.

public:
 int Receive(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers, System::Net::Sockets::SocketFlags socketFlags, [Runtime::InteropServices::Out] System::Net::Sockets::SocketError % errorCode);
public int Receive (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode);
[System.CLSCompliant(false)]
public int Receive (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode);
member this.Receive : System.Collections.Generic.IList<ArraySegment<byte>> * System.Net.Sockets.SocketFlags * SocketError -> int
[<System.CLSCompliant(false)>]
member this.Receive : System.Collections.Generic.IList<ArraySegment<byte>> * System.Net.Sockets.SocketFlags * SocketError -> int
Public Function Receive (buffers As IList(Of ArraySegment(Of Byte)), socketFlags As SocketFlags, ByRef errorCode As SocketError) As Integer

Параметры

buffers
IList<ArraySegment<Byte>>

Список объектов ArraySegment<T> типа Byte, содержащих полученные данные.

socketFlags
SocketFlags

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

errorCode
SocketError

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

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

Int32

Количество полученных байтов.

Атрибуты

Исключения

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

-или-

Значение buffers. Отсчет равен нулю.

Произошла ошибка при попытке доступа к сокету.

Socket был закрыт.

Комментарии

Этот метод считывает данные в buffers параметр и возвращает количество байтов, которые успешно считываются. Вы можете вызывать как сокеты, ориентированные на подключение, так и без подключения.

Эта перегрузка требует предоставления одного или нескольких буферов получения. Значение SocketFlags по умолчанию равно None.

Если вы используете протокол, ориентированный на подключение, необходимо либо вызвать Connect подключение к удаленному узлу, либо Accept принять входящее подключение перед вызовом Receive. Метод Receive будет считывать только данные, поступающие из подключения к удаленному узлу, установленного в методе или Accept методеConnect. Если вы используете протокол без подключения, можно также использовать ReceiveFrom этот метод. ReceiveFrom позволяет получать данные, поступающие от любого узла.

Если данные недоступны для чтения, метод блокируется до тех пор, Receive пока не будут доступны данные, если не задано значение времени ожидания с помощью Socket.ReceiveTimeout. Если превышено значение времени ожидания, Receive вызов вызывает исключение SocketException. Если вы находитесь в режиме без блокировки и в буфере стека протокола отсутствуют данные, Receive метод завершится немедленно и вызовет исключение SocketException. Свойство можно использовать для Available определения доступности данных для чтения. Если Available значение не равно нулю, повторите операцию получения.

Если вы используете подключение Socket, метод будет считывать столько данных, Receive сколько доступно, вплоть до размера буфера. Если удаленный узел завершает Socket подключение к методу Shutdown и получает все доступные данные, Receive метод завершается немедленно и возвращает ноль байтов.

При использовании бессерверного SocketReceive подключения считывает первую диаграмму данных в очереди из адреса назначения, указанного в методеConnect. Если полученная датаграмма превышает размер buffers параметра, заполняется первой частью сообщения, buffers лишние данные теряются и SocketException возникает исключение.

Примечание

При получении SocketExceptionсвойства используйте SocketException.ErrorCode свойство для получения определенного кода ошибки. Получив этот код, ознакомьтесь с документацией по коду ошибки API Windows Sockets версии 2, чтобы получить подробное описание ошибки.

Примечание

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

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

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

Receive(Byte[], Int32, SocketFlags)

Получает указанное число байтов данных из связанного объекта Socket в приемный буфер, используя заданный объект SocketFlags.

public:
 int Receive(cli::array <System::Byte> ^ buffer, int size, System::Net::Sockets::SocketFlags socketFlags);
public int Receive (byte[] buffer, int size, System.Net.Sockets.SocketFlags socketFlags);
member this.Receive : byte[] * int * System.Net.Sockets.SocketFlags -> int
Public Function Receive (buffer As Byte(), size As Integer, socketFlags As SocketFlags) As Integer

Параметры

buffer
Byte[]

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

size
Int32

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

socketFlags
SocketFlags

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

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

Int32

Количество полученных байтов.

Исключения

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

Значение size превышает размер параметра buffer.

Произошла ошибка при попытке доступа к сокету.

Socket был закрыт.

Вызывающий оператор в стеке вызовов не имеет необходимых разрешений.

Примеры

Следующий код получает данные, найденные bufferв , и указывает None для SocketFlags.

// Receive the host home page content and loop until all the data is received.
Int32 bytes = s->Receive( RecvBytes, RecvBytes->Length, SocketFlags::None );
strRetPage =  "Default HTML page on ";
strRetPage->Concat( server,  ":\r\n", ASCII->GetString( RecvBytes, 0, bytes ) );
while ( bytes > 0 )
{
   bytes = s->Receive( RecvBytes, RecvBytes->Length, SocketFlags::None );
   strRetPage->Concat( ASCII->GetString( RecvBytes, 0, bytes ) );
}

// Receive the host home page content and loop until all the data is received.
Int32 bytes = s.Receive(RecvBytes, RecvBytes.Length, 0);
strRetPage = "Default HTML page on " + server + ":\r\n";
strRetPage = strRetPage + ASCII.GetString(RecvBytes, 0, bytes);

while (bytes > 0)
{
  bytes = s.Receive(RecvBytes, RecvBytes.Length, 0);
  strRetPage = strRetPage + ASCII.GetString(RecvBytes, 0, bytes);
}

' Receive the host home page content and loop until all the data is received.

'Dim bytes As Int32 = s.Receive(RecvBytes, RecvBytes.Length, 0)
Dim bytes As Int32 = s.Receive(RecvBytes, RecvBytes.Length, 0)

strRetPage = "Default HTML page on " + server + ":\r\n"
strRetPage = "Default HTML page on " + server + ":" + ControlChars.Lf + ControlChars.NewLine

Dim i As Integer

While bytes > 0

  bytes = s.Receive(RecvBytes, RecvBytes.Length, 0)

  strRetPage = strRetPage + ASCII.GetString(RecvBytes, 0, bytes)

End While

Комментарии

Метод Receive считывает данные в buffer параметр и возвращает количество байтов, которые успешно считываются. Вы можете вызывать Receive как сокеты, ориентированные на подключение, так и без подключения.

Эта перегрузка требует только предоставления буфера получения, количества байтов, которые требуется получить, и необходимых SocketFlags.

Если вы используете протокол, ориентированный на подключение, необходимо либо вызвать Connect подключение к удаленному узлу, либо Accept принять входящее подключение перед вызовом Receive. Этот Receive метод будет считывать только данные, поступающие из удаленного узла, установленного в методе или Accept методеConnect. Если вы используете протокол без подключения, можно также использовать ReceiveFrom этот метод. ReceiveFrom позволяет получать данные, поступающие от любого узла.

Если данные недоступны для чтения, метод блокируется до тех пор, Receive пока данные не будут доступны, если не было задано значение времени ожидания.Socket.ReceiveTimeout Если превышено значение времени ожидания, Receive вызов вызов вызовет исключение SocketException. Если вы находитесь в режиме без блокировки и отсутствуют данные в буфере стека протоколов, Receive метод завершится немедленно и вызовет исключение SocketException. Свойство можно использовать для Available определения доступности данных для чтения. Если Available значение не равно нулю, повторите операцию получения.

Если вы используете подключение Socket, Receive метод будет считывать столько данных, сколько доступно, до количества байтов, указанного параметром size . Если удаленный узел завершит Socket подключение к методу Shutdown и все доступные данные были получены, Receive метод завершится немедленно и возвратит ноль байтов.

Если вы используете бессерверное Socketподключение, Receive считывает первую диаграмму данных в очереди из адреса назначения, указанного в методе Connect . Если полученная датаграмма превышает размер buffer параметра, заполняется первой частью сообщения, buffer лишние данные теряются и SocketException возникает исключение.

Примечание

При получении SocketExceptionсвойства используйте SocketException.ErrorCode свойство для получения определенного кода ошибки. Получив этот код, ознакомьтесь с документацией по коду ошибки API Windows sockets версии 2, чтобы получить подробное описание ошибки.

Примечание

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

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

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

Receive(Span<Byte>, SocketFlags)

Получает данные из связанного объекта Socket в приемный буфер, используя заданный объект SocketFlags.

public:
 int Receive(Span<System::Byte> buffer, System::Net::Sockets::SocketFlags socketFlags);
public int Receive (Span<byte> buffer, System.Net.Sockets.SocketFlags socketFlags);
member this.Receive : Span<byte> * System.Net.Sockets.SocketFlags -> int
Public Function Receive (buffer As Span(Of Byte), socketFlags As SocketFlags) As Integer

Параметры

buffer
Span<Byte>

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

socketFlags
SocketFlags

Побитовое сочетание значений перечисления, которое задает поведение получения и отправки.

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

Int32

Количество полученных байтов.

Исключения

Произошла ошибка при попытке доступа к сокету.

Socket был закрыт.

Вызывающий оператор в стеке вызовов не имеет необходимых разрешений.

Комментарии

Метод Receive считывает данные в параметр буфера и возвращает количество байтов, которые успешно считываются. Вы можете вызывать Receive как сокеты, ориентированные на подключение, так и без подключения.

Эта перегрузка требует только предоставления буфера получения. Смещение буфера по умолчанию равно 0, размер по умолчанию — длине параметра буфера, а SocketFlags значение по умолчанию None— .

Если вы используете протокол, ориентированный на подключение, необходимо либо вызвать Connect подключение к удаленному узлу, либо Accept принять входящее подключение перед вызовом Receive. Этот Receive метод будет считывать только данные, поступающие из удаленного узла, установленного в методе или Accept методеConnect. Если вы используете протокол без подключения, можно также использовать ReceiveFrom этот метод. ReceiveFrom позволяет получать данные, поступающие от любого узла.

Если данные недоступны для чтения, метод блокируется до тех пор, Receive пока данные не будут доступны, если не было задано значение времени ожидания.Socket.ReceiveTimeout При превышении Receive значения времени ожидания вызов вызовет исключение SocketException. Если вы находитесь в режиме без блокировки и в буфере стека протокола отсутствуют данные, Receive метод завершится немедленно и вызовет исключение SocketException. Свойство можно использовать для Available определения доступности данных для чтения. Если Available значение не равно нулю, повторите операцию получения.

Если вы используете подключение Socket, Receive метод будет считывать столько данных, сколько доступно, вплоть до размера буфера. Если удаленный узел завершит Socket подключение к методу Shutdown и все доступные данные были получены, Receive метод завершится немедленно и возвратит ноль байтов.

Если вы используете бессерверное Socketподключение, Receive считывает первую в очереди датаграмму из адреса назначения, указанного в методе Connect . Если полученная датаграмма превышает размер buffer параметра, заполняется первой частью сообщения, buffer лишние данные теряются и SocketException возникают.

Примечание

При получении SocketExceptionсвойства используйте SocketException.ErrorCode свойство для получения определенного кода ошибки. Получив этот код, ознакомьтесь с документацией по коду ошибки API Windows sockets версии 2, чтобы получить подробное описание ошибки.

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

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

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

Receive(Byte[], Int32, Int32, SocketFlags)

Получает указанное число байтов данных из связанного объекта Socket в приемный буфер с указанной позиции смещения, используя заданный объект SocketFlags.

public:
 int Receive(cli::array <System::Byte> ^ buffer, int offset, int size, System::Net::Sockets::SocketFlags socketFlags);
public int Receive (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags);
member this.Receive : byte[] * int * int * System.Net.Sockets.SocketFlags -> int
Public Function Receive (buffer As Byte(), offset As Integer, size As Integer, socketFlags As SocketFlags) As Integer

Параметры

buffer
Byte[]

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

offset
Int32

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

size
Int32

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

socketFlags
SocketFlags

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

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

Int32

Количество полученных байтов.

Исключения

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

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

-или-

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

-или-

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

-или-

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

socketFlags — недопустимое сочетание значений.

-или-

Свойство LocalEndPoint не задано.

-или-

Произошла ошибка операционной системы при доступе к Socket.

Socket был закрыт.

Вызывающий оператор в стеке вызовов не имеет необходимых разрешений.

Примеры

В следующем примере кода указывается буфер данных, смещение, размер и флаг сокета перед получением данных на подключенном устройстве Socket.

// Displays sending with a connected socket
// using the overload that takes a buffer, offset, message size, and socket flags.
int SendReceiveTest4( Socket^ server )
{
   array<Byte>^ msg = Encoding::UTF8->GetBytes( "This is a test" );
   array<Byte>^ bytes = gcnew array<Byte>(256);
   try
   {
      
      // Blocks until send returns.
      int byteCount = server->Send( msg, 0, msg->Length, SocketFlags::None );
      Console::WriteLine( "Sent {0} bytes.", byteCount.ToString() );
      
      // Get reply from the server.
      byteCount = server->Receive( bytes, 0, server->Available,
         SocketFlags::None );
      if ( byteCount > 0 )
      {
         Console::WriteLine( Encoding::UTF8->GetString( bytes ) );
      }
   }
   catch ( SocketException^ e ) 
   {
      Console::WriteLine(  "{0} Error code: {1}.", e->Message, e->ErrorCode.ToString() );
      return (e->ErrorCode);
   }
   return 0;
}
// Displays sending with a connected socket
// using the overload that takes a buffer, offset, message size, and socket flags.
public static int SendReceiveTest4(Socket server)
{
    byte[] msg = Encoding.UTF8.GetBytes("This is a test");
    byte[] bytes = new byte[256];
    try
    {
        // Blocks until send returns.
        int byteCount = server.Send(msg, 0, msg.Length, SocketFlags.None);
        Console.WriteLine("Sent {0} bytes.", byteCount);

        // Get reply from the server.
        byteCount = server.Receive(bytes, 0, bytes.Length, SocketFlags.None);

        if (byteCount > 0)
            Console.WriteLine(Encoding.UTF8.GetString(bytes, 0, byteCount));
    }
    catch (SocketException e)
    {
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode);
        return (e.ErrorCode);
    }
    return 0;
}
' Displays sending with a connected socket
' using the overload that takes a buffer, offset, message size, and socket flags.
Public Shared Function SendReceiveTest4(ByVal server As Socket) As Integer 
    Dim msg As Byte() = Encoding.UTF8.GetBytes("This is a test")
    Dim bytes(255) As Byte
    Try
        ' Blocks until send returns.
        Dim byteCount As Integer = server.Send(msg, 0, msg.Length, SocketFlags.None)
        Console.WriteLine("Sent {0} bytes.", byteCount)
        
        ' Get reply from the server.
        byteCount = server.Receive(bytes, 0, server.Available, SocketFlags.None)
        
        If byteCount > 0 Then
            Console.WriteLine(Encoding.UTF8.GetString(bytes))
        End If
    Catch e As SocketException
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode)
        Return e.ErrorCode
    End Try
    Return 0

End Function 'SendReceiveTest4

Комментарии

Метод Receive считывает данные в параметр буфера и возвращает число байтов, которые успешно считываются. Вы можете вызывать Receive как сокеты, ориентированные на подключение, так и без подключения.

Если вы используете протокол, ориентированный на подключение, необходимо либо вызвать Connect подключение к удаленному узлу, либо Accept принять входящее подключение перед вызовом Receive. Метод Receive будет считывать только данные, поступающие с удаленного узла, установленного в методе или Accept из удаленного Connect узла. Если вы используете протокол без подключения, можно также использовать ReceiveFrom этот метод. ReceiveFrom позволяет получать данные, поступающие от любого узла.

Если данные недоступны для чтения, метод блокируется до тех пор, Receive пока не будут доступны данные, если не задано значение времени ожидания с помощью Socket.ReceiveTimeout. Если превышено значение времени ожидания, Receive вызов вызовет исключение SocketException. Если вы находитесь в режиме без блокировки и в буфере стека протокола отсутствуют данные, Receive метод завершится немедленно и вызовет исключение SocketException. Произошла ошибка при попытке доступа к сокету. См. примечания ниже. Свойство можно использовать для Available определения доступности данных для чтения. Если Available значение не равно нулю, повторите операцию получения.

Если вы используете подключение Socket, Receive метод будет считывать столько данных, сколько доступно, до количества байтов, указанных параметром размера. Если удаленный узел завершает Socket подключение к методу Shutdown и получает все доступные данные, Receive метод завершается немедленно и возвращает ноль байтов.

При использовании бессерверного SocketReceive подключения считывает первую диаграмму данных в очереди из адреса назначения, указанного в методеConnect. Если полученная датаграмма превышает размер buffer параметра, заполняется первой частью сообщения, buffer лишние данные теряются и SocketException возникает исключение.

Примечание

При получении SocketExceptionсвойства используйте SocketException.ErrorCode свойство для получения определенного кода ошибки. Получив этот код, ознакомьтесь с документацией по коду ошибки API Windows Sockets версии 2, чтобы получить подробное описание ошибки.

Примечание

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

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

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

Receive(Byte[], SocketFlags)

Получает данные из связанного объекта Socket в приемный буфер, используя заданный объект SocketFlags.

public:
 int Receive(cli::array <System::Byte> ^ buffer, System::Net::Sockets::SocketFlags socketFlags);
public int Receive (byte[] buffer, System.Net.Sockets.SocketFlags socketFlags);
member this.Receive : byte[] * System.Net.Sockets.SocketFlags -> int
Public Function Receive (buffer As Byte(), socketFlags As SocketFlags) As Integer

Параметры

buffer
Byte[]

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

socketFlags
SocketFlags

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

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

Int32

Количество полученных байтов.

Исключения

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

Произошла ошибка при попытке доступа к сокету.

Socket был закрыт.

Вызывающий оператор в стеке вызовов не имеет необходимых разрешений.

Примеры

В следующем примере кода указывается буфер данных и SocketFlags для получения данных на подключенном объекте Socket.

// Displays sending with a connected socket
// using the overload that takes a buffer and socket flags.
int SendReceiveTest2( Socket^ server )
{
   array<Byte>^ msg = Encoding::UTF8->GetBytes( "This is a test" );
   array<Byte>^ bytes = gcnew array<Byte>(256);
   try
   {
      // Blocks until send returns.
      int byteCount = server->Send( msg, SocketFlags::None );
      Console::WriteLine( "Sent {0} bytes.", byteCount.ToString() );
      
      // Get reply from the server.
      byteCount = server->Receive( bytes, SocketFlags::None );
      if ( byteCount > 0 )
      {
         Console::WriteLine( Encoding::UTF8->GetString( bytes ) );
      }
   }
   catch ( SocketException^ e ) 
   {
      Console::WriteLine( "{0} Error code: {1}.", e->Message, e->ErrorCode.ToString() );
      return (e->ErrorCode);
   }
   return 0;
}
// Displays sending with a connected socket
// using the overload that takes a buffer and socket flags.
public static int SendReceiveTest2(Socket server)
{
    byte[] msg = Encoding.UTF8.GetBytes("This is a test");
    byte[] bytes = new byte[256];
    try
    {
        // Blocks until send returns.
        int byteCount = server.Send(msg, SocketFlags.None);
        Console.WriteLine("Sent {0} bytes.", byteCount);

        // Get reply from the server.
        byteCount = server.Receive(bytes, SocketFlags.None);
        if (byteCount > 0)
            Console.WriteLine(Encoding.UTF8.GetString(bytes));
    }
    catch (SocketException e)
    {
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode);
        return (e.ErrorCode);
    }
    return 0;
}
' Displays sending with a connected socket
' using the overload that takes a buffer and socket flags.
Public Shared Function SendReceiveTest2(ByVal server As Socket) As Integer 
    Dim msg As Byte() = Encoding.UTF8.GetBytes("This is a test")
    Dim bytes(255) As Byte
    Try
        ' Blocks until send returns.
        Dim byteCount As Integer = server.Send(msg, SocketFlags.None)
        Console.WriteLine("Sent {0} bytes.", byteCount)
        
        ' Get reply from the server.
        byteCount = server.Receive(bytes, SocketFlags.None)
        If byteCount > 0 Then
            Console.WriteLine(Encoding.UTF8.GetString(bytes))
        End If
    Catch e As SocketException
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode)
        Return e.ErrorCode
    End Try
    Return 0

End Function 'SendReceiveTest2

Комментарии

Метод Receive считывает данные в параметр буфера и возвращает количество байтов, которые успешно считываются. Вы можете вызывать Receive как сокеты, ориентированные на подключение, так и без подключения.

Эта перегрузка требует только предоставления буфера получения и необходимого SocketFlags. Смещение буфера по умолчанию — 0, а размер по умолчанию — длину параметра байта.

Если вы используете протокол, ориентированный на подключение, необходимо либо вызвать Connect подключение к удаленному узлу, либо Accept принять входящее подключение перед вызовом Receive. Этот Receive метод будет считывать только данные, поступающие из удаленного узла, установленного в методе или Accept методеConnect. Если вы используете протокол без подключения, можно также использовать ReceiveFrom этот метод. ReceiveFrom позволяет получать данные, поступающие от любого узла.

Если данные недоступны для чтения, метод блокируется до тех пор, Receive пока данные не будут доступны. Если вы находитесь в режиме без блокировки и отсутствуют данные в буфере стека протоколов, Receive метод завершится немедленно и вызовет исключение SocketException. Свойство можно использовать для Available определения доступности данных для чтения. Если Available значение не равно нулю, повторите операцию получения.

Если вы используете подключение Socket, метод будет считывать столько данных, Receive сколько доступно до размера буфера. Если удаленный узел завершит Socket подключение к методу Shutdown и все доступные данные были получены, Receive метод завершится немедленно и возвратит ноль байтов.

Если вы используете бессерверное Socketподключение, Receive считывает первую заквеченную диаграмму данных из адреса назначения, указанного в методе Connect . Если полученная датаграмма превышает размер buffer параметра, заполняется первой частью сообщения, buffer лишние данные теряются и SocketException возникает исключение.

Примечание

При получении SocketExceptionсвойства используйте SocketException.ErrorCode свойство для получения определенного кода ошибки. Получив этот код, ознакомьтесь с документацией по коду ошибки API Windows sockets версии 2, чтобы получить подробное описание ошибки.

Примечание

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

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

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

Receive(Span<Byte>)

Возвращает данные из связанного объекта Socket в приемный буфер.

public:
 int Receive(Span<System::Byte> buffer);
public int Receive (Span<byte> buffer);
member this.Receive : Span<byte> -> int
Public Function Receive (buffer As Span(Of Byte)) As Integer

Параметры

buffer
Span<Byte>

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

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

Int32

Количество полученных байтов.

Исключения

Произошла ошибка при попытке доступа к сокету.

Socket был закрыт.

Вызывающий оператор в стеке вызовов не имеет необходимых разрешений.

Комментарии

Метод Receive считывает данные в параметр буфера и возвращает количество байтов, которые успешно считываются. Вы можете вызывать Receive как сокеты, ориентированные на подключение, так и без подключения.

Эта перегрузка требует только предоставления буфера получения. Смещение буфера по умолчанию равно 0, размер по умолчанию — длине параметра буфера, а SocketFlags значение по умолчанию None— .

Если вы используете протокол, ориентированный на подключение, необходимо либо вызвать Connect подключение к удаленному узлу, либо Accept принять входящее подключение перед вызовом Receive. Этот Receive метод будет считывать только данные, поступающие из удаленного узла, установленного в методе или Accept методеConnect. Если вы используете протокол без подключения, можно также использовать ReceiveFrom этот метод. ReceiveFrom позволяет получать данные, поступающие от любого узла.

Если данные недоступны для чтения, метод блокируется до тех пор, Receive пока данные не будут доступны, если не было задано значение времени ожидания.Socket.ReceiveTimeout При превышении Receive значения времени ожидания вызов вызовет исключение SocketException. Если вы находитесь в режиме без блокировки и в буфере стека протокола отсутствуют данные, Receive метод завершится немедленно и вызовет исключение SocketException. Свойство можно использовать для Available определения доступности данных для чтения. Если Available значение не равно нулю, повторите операцию получения.

Если вы используете подключение Socket, Receive метод будет считывать столько данных, сколько доступно, вплоть до размера буфера. Если удаленный узел завершит Socket подключение к методу Shutdown и все доступные данные были получены, Receive метод завершится немедленно и возвратит ноль байтов.

Если вы используете бессерверное Socketподключение, Receive считывает первую в очереди датаграмму из адреса назначения, указанного в методе Connect . Если полученная датаграмма превышает размер buffer параметра, заполняется первой частью сообщения, buffer лишние данные теряются и SocketException возникают.

Примечание

При получении SocketExceptionсвойства используйте SocketException.ErrorCode свойство для получения определенного кода ошибки. Получив этот код, ознакомьтесь с документацией по коду ошибки API Windows sockets версии 2, чтобы получить подробное описание ошибки.

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

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

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

Receive(IList<ArraySegment<Byte>>)

Получает данные из связанного объекта Socket в список приемных буферов.

public:
 int Receive(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers);
public int Receive (System.Collections.Generic.IList<ArraySegment<byte>> buffers);
member this.Receive : System.Collections.Generic.IList<ArraySegment<byte>> -> int
Public Function Receive (buffers As IList(Of ArraySegment(Of Byte))) As Integer

Параметры

buffers
IList<ArraySegment<Byte>>

Список объектов ArraySegment<T> типа Byte, содержащих полученные данные.

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

Int32

Количество полученных байтов.

Исключения

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

Произошла ошибка при попытке доступа к сокету.

Socket был закрыт.

Комментарии

Этот метод считывает данные в параметр буферов и возвращает количество байтов, которые успешно считываются. Вы можете вызывать как сокеты, ориентированные на подключение, так и без подключения.

Эта перегрузка требует предоставления одного или нескольких буферов получения.

Если вы используете протокол, ориентированный на подключение, необходимо либо вызвать Connect подключение к удаленному узлу, либо Accept принять входящее подключение перед вызовом Receive. Этот Receive метод будет считывать только данные, поступающие из подключения удаленного узла, установленного в методе или Accept методеConnect. Если вы используете протокол без подключения, можно также использовать ReceiveFrom этот метод. ReceiveFrom позволяет получать данные, поступающие от любого узла.

Если данные недоступны для чтения, метод блокируется до тех пор, Receive пока данные не будут доступны, если не было задано значение времени ожидания.Socket.ReceiveTimeout Если превышено значение времени ожидания, Receive вызов вызов вызовет исключение SocketException. Если вы находитесь в режиме без блокировки и отсутствуют данные в буфере стека протоколов, Receive метод завершится немедленно и вызовет исключение SocketException. Свойство можно использовать для Available определения доступности данных для чтения. Если Available значение не равно нулю, повторите операцию получения.

Если вы используете подключение Socket, Receive метод будет считывать столько данных, сколько доступно, вплоть до размера буфера. Если удаленный узел завершит Socket подключение к методу Shutdown и все доступные данные были получены, Receive метод завершится немедленно и возвратит ноль байтов.

Если вы используете бессерверное Socketподключение, Receive считывает первую заквеченную диаграмму данных из адреса назначения, указанного в методе Connect . Если полученная датаграмма превышает размер buffers параметра, заполняется первой частью сообщения, buffers лишние данные теряются и SocketException возникает исключение.

Примечание

При получении SocketExceptionсвойства используйте SocketException.ErrorCode свойство для получения определенного кода ошибки. Получив этот код, ознакомьтесь с документацией по коду ошибки API Windows sockets версии 2, чтобы получить подробное описание ошибки.

Примечание Этот элемент выводит сведения трассировки при включении трассировки сети в приложении. Дополнительные сведения см. в разделе "Трассировка сети" в платформа .NET Framework.

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

Receive(Byte[])

Возвращает данные из связанного объекта Socket в приемный буфер.

public:
 int Receive(cli::array <System::Byte> ^ buffer);
public int Receive (byte[] buffer);
member this.Receive : byte[] -> int
Public Function Receive (buffer As Byte()) As Integer

Параметры

buffer
Byte[]

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

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

Int32

Количество полученных байтов.

Исключения

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

Произошла ошибка при попытке доступа к сокету.

Socket был закрыт.

Вызывающий оператор в стеке вызовов не имеет необходимых разрешений.

Примеры

В следующем примере кода данные по подключенной сети Socketполучаются.

// Displays sending with a connected socket
// using the overload that takes a buffer.
int SendReceiveTest1( Socket^ server )
{
   array<Byte>^ msg = Encoding::UTF8->GetBytes( "This is a test" );
   array<Byte>^ bytes = gcnew array<Byte>(256);
   try
   {
      // Blocks until send returns.
      int byteCount = server->Send( msg );
      Console::WriteLine( "Sent {0} bytes.", byteCount.ToString() );
      
      // Get reply from the server.
      byteCount = server->Receive( bytes );
      if ( byteCount > 0 )
      {
         Console::WriteLine( Encoding::UTF8->GetString( bytes ) );
      }
   }
   catch ( SocketException^ e ) 
   {
      Console::WriteLine( "{0} Error code: {1}.", e->Message, e->ErrorCode.ToString() );
      return ( e->ErrorCode );
   }
   return 0;
}
// Displays sending with a connected socket
// using the overload that takes a buffer.
public static int SendReceiveTest1(Socket server)
{
    byte[] msg = Encoding.UTF8.GetBytes("This is a test");
    byte[] bytes = new byte[256];
    try
    {
        // Blocks until send returns.
        int i = server.Send(msg);
        Console.WriteLine("Sent {0} bytes.", i);

        // Get reply from the server.
        i = server.Receive(bytes);
        Console.WriteLine(Encoding.UTF8.GetString(bytes));
    }
    catch (SocketException e)
    {
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode);
        return (e.ErrorCode);
    }
    return 0;
}
' Displays sending with a connected socket
' using the overload that takes a buffer.
Public Shared Function SendReceiveTest1(ByVal server As Socket) As Integer 
    Dim msg As Byte() = Encoding.UTF8.GetBytes("This is a test")
    Dim bytes(255) As Byte
    Try
        ' Blocks until send returns.
        Dim i As Integer = server.Send(msg)
        Console.WriteLine("Sent {0} bytes.", i)
        
        ' Get reply from the server.
        i = server.Receive(bytes)
        Console.WriteLine(Encoding.UTF8.GetString(bytes))
    Catch e As SocketException
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode)
        Return e.ErrorCode
    End Try
    Return 0

End Function 'SendReceiveTest1

Комментарии

Метод Receive считывает данные в параметр буфера и возвращает количество байтов, которые успешно считываются. Вы можете вызывать Receive как сокеты, ориентированные на подключение, так и без подключения.

Эта перегрузка требует только предоставления буфера получения. Смещение буфера по умолчанию равно 0, размер по умолчанию — длине параметра буфера, а SocketFlags значение по умолчанию None— .

Если вы используете протокол, ориентированный на подключение, необходимо либо вызвать Connect подключение к удаленному узлу, либо Accept принять входящее подключение перед вызовом Receive. Этот Receive метод будет считывать только данные, поступающие из удаленного узла, установленного в методе или Accept методеConnect. Если вы используете протокол без подключения, можно также использовать ReceiveFrom этот метод. ReceiveFrom позволяет получать данные, поступающие от любого узла.

Если данные недоступны для чтения, метод блокируется до тех пор, Receive пока данные не будут доступны, если не было задано значение времени ожидания.Socket.ReceiveTimeout Если превышено значение времени ожидания, Receive вызов вызов вызовет исключение SocketException. Если вы находитесь в режиме без блокировки и отсутствуют данные в буфере стека протоколов, Receive метод завершится немедленно и вызовет исключение SocketException. Свойство можно использовать для Available определения доступности данных для чтения. Если Available значение не равно нулю, повторите операцию получения.

Если вы используете подключение Socket, Receive метод будет считывать столько данных, сколько доступно, вплоть до размера буфера. Если удаленный узел завершит Socket подключение к методу Shutdown и все доступные данные были получены, Receive метод завершится немедленно и возвратит ноль байтов.

Если вы используете бессерверное Socketподключение, Receive считывает первую диаграмму данных в очереди из адреса назначения, указанного в методе Connect . Если полученная датаграмма превышает размер buffer параметра, заполняется первой частью сообщения, buffer лишние данные теряются и SocketException возникает исключение.

Примечание

При получении SocketExceptionсвойства используйте SocketException.ErrorCode свойство для получения определенного кода ошибки. Получив этот код, ознакомьтесь с документацией по коду ошибки API Windows sockets версии 2, чтобы получить подробное описание ошибки.

Примечание

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

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

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

Receive(IList<ArraySegment<Byte>>, SocketFlags)

Важно!

Этот API несовместим с CLS.

Альтернативный вариант, совместимый с CLS
System.Net.Sockets.Socket.Receive(Byte[], SocketFlags)

Получает данные из связанного объекта Socket в список приемных буферов, используя заданный объект SocketFlags.

public:
 int Receive(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers, System::Net::Sockets::SocketFlags socketFlags);
public int Receive (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags);
[System.CLSCompliant(false)]
public int Receive (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags);
member this.Receive : System.Collections.Generic.IList<ArraySegment<byte>> * System.Net.Sockets.SocketFlags -> int
[<System.CLSCompliant(false)>]
member this.Receive : System.Collections.Generic.IList<ArraySegment<byte>> * System.Net.Sockets.SocketFlags -> int
Public Function Receive (buffers As IList(Of ArraySegment(Of Byte)), socketFlags As SocketFlags) As Integer

Параметры

buffers
IList<ArraySegment<Byte>>

Список объектов ArraySegment<T> типа Byte, содержащих полученные данные.

socketFlags
SocketFlags

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

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

Int32

Количество полученных байтов.

Атрибуты

Исключения

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

-или-

Значение buffers. Отсчет равен нулю.

Произошла ошибка при попытке доступа к сокету.

Socket был закрыт.

Примеры

В следующем примере кода показано, как получать данные в подключенном объекте Socket.


// Build the buffers for the receive.
List<ArraySegment<Byte> >^ receiveBuffers = 
    gcnew List<ArraySegment<Byte> >(2);

array<Byte>^ bigBuffer = gcnew array<Byte>(1024);

// Specify the first buffer segment (2 bytes, starting 
// at the 4th element of bigBuffer)
receiveBuffers->Add(ArraySegment<Byte>(bigBuffer, 4, 2));

// Specify the second buffer segment (500 bytes, starting
// at the 20th element of bigBuffer)
receiveBuffers->Add(
    ArraySegment<Byte>(bigBuffer, 20, 500));

tcpSocket->Receive(receiveBuffers);

Console::WriteLine("{0}", 
    asciiEncoding->GetString(bigBuffer));

// Build the buffers for the receive.
List<ArraySegment<byte>> recvBuffers =
                         new List<ArraySegment<byte>>(2);

byte[] bigBuffer = new byte[1024];

// Specify the first buffer segment (2 bytes, starting
// at the 4th element of bigBuffer)
recvBuffers.Add(new ArraySegment<byte>
                        (bigBuffer, 4, 2));

// Specify the second buffer segment (500 bytes, starting
// at the 20th element of bigBuffer)
recvBuffers.Add(new ArraySegment<byte>
                        (bigBuffer, 20, 500));

int bytesReceived = mySocket.Receive(recvBuffers);

Console.WriteLine("{0}", ASCII.GetString(bigBuffer));

Комментарии

Этот метод считывает данные в buffers параметр и возвращает количество байтов, которые успешно считываются. Вы можете вызывать как сокеты, ориентированные на подключение, так и без подключения.

Эта перегрузка требует предоставления одного или нескольких буферов получения. Значение SocketFlags по умолчанию равно None.

Если вы используете протокол, ориентированный на подключение, необходимо либо вызвать Connect подключение к удаленному узлу, либо Accept принять входящее подключение перед вызовом Receive. Этот Receive метод будет считывать только данные, поступающие из подключения удаленного узла, установленного в методе или Accept методеConnect. Если вы используете протокол без подключения, можно также использовать ReceiveFrom этот метод. ReceiveFrom позволяет получать данные, поступающие от любого узла.

Если данные недоступны для чтения, метод блокируется до тех пор, Receive пока данные не будут доступны, если не было задано значение времени ожидания.Socket.ReceiveTimeout Если превышено значение времени ожидания, Receive вызов вызывает исключение SocketException. Если вы находитесь в режиме без блокировки и отсутствуют данные в буфере стека протоколов, Receive метод завершится немедленно и вызовет исключение SocketException. Свойство можно использовать для Available определения доступности данных для чтения. Если Available значение не равно нулю, повторите операцию получения.

Если вы используете подключение Socket, Receive метод будет считывать столько данных, сколько доступно, вплоть до размера буфера. Если удаленный узел завершит Socket подключение к методу Shutdown и все доступные данные были получены, Receive метод завершится немедленно и возвратит ноль байтов.

Если вы используете бессерверное Socketподключение, Receive считывает первую заквеченную диаграмму данных из адреса назначения, указанного в методе Connect . Если полученная датаграмма превышает размер buffers параметра, заполняется первой частью сообщения, buffers лишние данные теряются и SocketException возникает исключение.

Примечание

При получении SocketExceptionсвойства используйте SocketException.ErrorCode свойство для получения определенного кода ошибки. Получив этот код, ознакомьтесь с документацией по коду ошибки API Windows sockets версии 2, чтобы получить подробное описание ошибки.

Примечание

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

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

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