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


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.cs
Исходный код:
Socket.cs
Исходный код:
Socket.cs
Исходный код:
Socket.cs
Исходный код:
Socket.cs

Получает данные из привязки 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 Объект, который хранит ошибку сокета.

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

Общее число полученных байтов. Метод возвращает ноль (0) только в том случае, если запрашивались ноль байтов или если больше байтов не доступно, так как сокет однорангового узла выполнил корректное завершение работы.

Исключения

buffer равно null.

offset меньше 0.

–или–

offset больше длины buffer.

–или–

size меньше 0.

–или–

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

Он 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 метод завершится немедленно и возвращает ноль байтов.

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

Замечание

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

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

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

Receive(Span<Byte>, SocketFlags, SocketError)

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

Получает данные из привязки 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

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

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

Общее число полученных байтов. Метод возвращает ноль (0) только в том случае, если запрашивались ноль байтов или если больше байтов не доступно, так как сокет однорангового узла выполнил корректное завершение работы.

Исключения

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

Он Socket был закрыт.

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

Комментарии

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

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

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

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

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

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

Замечание

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

Замечание

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

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

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

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

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

Получает данные из привязки 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);
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 Объект, который хранит ошибку сокета.

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

Общее число полученных байтов. Метод возвращает ноль (0) только в том случае, если запрашивались ноль байтов или если больше байтов не доступно, так как сокет однорангового узла выполнил корректное завершение работы.

Исключения

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 метод завершится немедленно и возвращает ноль байтов.

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

Замечание

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

Замечание

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

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

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

Receive(Byte[], Int32, SocketFlags)

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

Получает указанное число байтов данных из привязанного 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 .

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

Общее число полученных байтов. Метод возвращает ноль (0) только в том случае, если запрашивались ноль байтов или если больше байтов не доступно, так как сокет однорангового узла выполнил корректное завершение работы.

Исключения

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, 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 версии 2 , чтобы получить подробное описание ошибки.

Замечание

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

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

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

Receive(Span<Byte>, SocketFlags)

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

Получает данные из привязки 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

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

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

Общее число полученных байтов. Метод возвращает ноль (0) только в том случае, если запрашивались ноль байтов или если больше байтов не доступно, так как сокет однорангового узла выполнил корректное завершение работы.

Исключения

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

Он Socket был закрыт.

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

Комментарии

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

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

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

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

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

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

Замечание

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

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

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

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

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

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

Получает указанное число байтов из привязки 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 .

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

Общее число полученных байтов. Метод возвращает ноль (0) только в том случае, если запрашивались ноль байтов или если больше байтов не доступно, так как сокет однорангового узла выполнил корректное завершение работы.

Исключения

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.
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 метод завершится немедленно и возвращает ноль байтов.

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

Замечание

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

Замечание

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

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

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

Receive(Byte[], SocketFlags)

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

Получает данные из привязки 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 .

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

Общее число полученных байтов. Метод возвращает ноль (0) только в том случае, если запрашивались ноль байтов или если больше байтов не доступно, так как сокет однорангового узла выполнил корректное завершение работы.

Исключения

buffer равно null.

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

Он Socket был закрыт.

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

Примеры

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

// 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 версии 2 , чтобы получить подробное описание ошибки.

Замечание

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

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

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

Receive(Span<Byte>)

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

Получает данные из привязанного 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>

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

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

Общее число полученных байтов. Метод возвращает ноль (0) только в том случае, если запрашивались ноль байтов или если больше байтов не доступно, так как сокет однорангового узла выполнил корректное завершение работы.

Исключения

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

Он Socket был закрыт.

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

Комментарии

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

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

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

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

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

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

Замечание

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

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

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

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

Receive(IList<ArraySegment<Byte>>)

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

Получает данные из привязанного 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 , содержащих полученные данные.

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

Общее число полученных байтов. Метод возвращает ноль (0) только в том случае, если запрашивались ноль байтов или если больше байтов не доступно, так как сокет однорангового узла выполнил корректное завершение работы.

Исключения

Параметр buffers имеет значение 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 версии 2 , чтобы получить подробное описание ошибки.

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

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

Receive(Byte[])

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

Получает данные из привязанного 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 , который является расположением хранилища для полученных данных.

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

Общее число полученных байтов. Метод возвращает ноль (0) только в том случае, если запрашивались ноль байтов или если больше байтов не доступно, так как сокет однорангового узла выполнил корректное завершение работы.

Исключения

buffer равно null.

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

Он Socket был закрыт.

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

Примеры

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

// 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 версии 2 , чтобы получить подробное описание ошибки.

Замечание

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

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

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

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

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

Получает данные из привязки 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);
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 .

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

Общее число полученных байтов. Метод возвращает ноль (0) только в том случае, если запрашивались ноль байтов или если больше байтов не доступно, так как сокет однорангового узла выполнил корректное завершение работы.

Исключения

buffers равно null.

–или–

buffers. Число равно нулю.

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

Он Socket был закрыт.

Примеры

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


// 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 версии 2 , чтобы получить подробное описание ошибки.

Замечание

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

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

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