Socket.SendTo Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Отправляет данные в определенную конечную точку.
Перегрузки
| Имя | Описание |
|---|---|
| SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint) |
Отправляет указанное число байтов данных в указанную конечную точку, начиная с указанного расположения в буфере и используя указанный SocketFlags. |
| SendTo(Byte[], Int32, SocketFlags, EndPoint) |
Отправляет указанное число байтов данных в указанную конечную точку с помощью указанной SocketFlags. |
| SendTo(ReadOnlySpan<Byte>, SocketFlags, SocketAddress) |
Отправляет данные в определенную конечную точку с помощью указанной SocketFlags. |
| SendTo(ReadOnlySpan<Byte>, EndPoint) |
Отправляет данные в указанную конечную точку. |
| SendTo(Byte[], SocketFlags, EndPoint) |
Отправляет данные в определенную конечную точку с помощью указанной SocketFlags. |
| SendTo(Byte[], EndPoint) |
Отправляет данные в указанную конечную точку. |
| SendTo(ReadOnlySpan<Byte>, SocketFlags, EndPoint) |
Отправляет данные в определенную конечную точку с помощью указанной SocketFlags. |
SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- Исходный код:
- Socket.cs
- Исходный код:
- Socket.cs
- Исходный код:
- Socket.cs
- Исходный код:
- Socket.cs
- Исходный код:
- Socket.cs
Отправляет указанное число байтов данных в указанную конечную точку, начиная с указанного расположения в буфере и используя указанный SocketFlags.
public:
int SendTo(cli::array <System::Byte> ^ buffer, int offset, int size, System::Net::Sockets::SocketFlags socketFlags, System::Net::EndPoint ^ remoteEP);
public int SendTo(byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, System.Net.EndPoint remoteEP);
member this.SendTo : byte[] * int * int * System.Net.Sockets.SocketFlags * System.Net.EndPoint -> int
Public Function SendTo (buffer As Byte(), offset As Integer, size As Integer, socketFlags As SocketFlags, remoteEP As EndPoint) As Integer
Параметры
- offset
- Int32
Позиция в буфере данных, с которой начинается отправка данных.
- size
- Int32
Количество байтов для отправки.
- socketFlags
- SocketFlags
Побитовое сочетание значений SocketFlags .
Возвращаемое значение
Число отправленных байтов.
Исключения
offset меньше 0.
–или–
offset больше длины buffer.
–или–
size меньше 0.
–или–
size больше длины buffer минус значения offset параметра.
socketFlags не является допустимым сочетанием значений.
–или–
При доступе к операционной Socketсистеме возникает ошибка.
Он Socket был закрыт.
Вызывающий объект в стеке вызовов не имеет необходимых разрешений.
Примеры
В следующем примере кода отправляется диаграмма без подключения к указанному удаленному узлу. Смещение, размер и SocketFlags передаются методу SendTo .
public static void SendTo4()
{
IPHostEntry hostEntry = Dns.GetHostEntry(Dns.GetHostName());
IPEndPoint endPoint = new IPEndPoint(hostEntry.AddressList[0], 11000);
Socket s = new Socket(endPoint.Address.AddressFamily,
SocketType.Dgram,
ProtocolType.Udp);
byte[] msg = Encoding.ASCII.GetBytes("This is a test");
Console.WriteLine("Sending data.");
// This call blocks.
s.SendTo(msg, 0, msg.Length, SocketFlags.None, endPoint);
s.Close();
}
Public Shared Sub SendTo4()
Dim hostEntry As IPHostEntry = Dns.GetHostEntry(Dns.GetHostName())
Dim endPoint As New IPEndPoint(hostEntry.AddressList(0), 11000)
Dim s As New Socket(endPoint.Address.AddressFamily, SocketType.Dgram, ProtocolType.Udp)
Dim msg As Byte() = Encoding.ASCII.GetBytes("This is a test")
Console.WriteLine("Sending data.")
' This call blocks.
s.SendTo(msg, 0, msg.Length, SocketFlags.None, endPoint)
s.Close()
End Sub
Комментарии
В этой перегрузке, если указать DontRoute флаг в качестве socketflags параметра, данные, которые вы отправляете, не будут перенаправлены.
Если вы используете протокол без подключения, вам не нужно устанавливать удаленный узел по умолчанию с Connect методом перед вызовом SendTo. Это необходимо сделать только в том случае, если вы планируете вызвать Send метод. При вызове Connect метода перед вызовом SendToremoteEP параметр переопределит указанный удаленный узел по умолчанию только для этой операции отправки. Для вызова Bind метода также не требуется, так как базовый поставщик услуг назначит наиболее подходящий адрес локальной сети и номер порта. Если необходимо определить назначенный адрес локальной сети и номер порта, можно использовать LocalEndPoint свойство после успешного SendTo завершения метода.
Хотя он предназначен для протоколов без подключения, также работает с протоколами, SendTo ориентированными на подключение. Если вы используете протокол, ориентированный на подключение, необходимо сначала установить подключение к удаленному узлу, вызвав Connect метод или приняв входящий запрос подключения с помощью Accept метода. Если вы не устанавливаете или не принимаете подключение к удаленному узлу, SendTo вызовет исключение SocketException. Вы также можете установить удаленный узел по умолчанию для протокола без подключения перед вызовом SendTo метода. В любом из этих случаев SendTo параметр будет игнорироваться remoteEP и отправлять данные только на подключенный или удаленный узел по умолчанию.
Блокирующие сокеты блокируются до тех пор, пока не будет отправлено запрошенное число байтов. Так как блокировка Socket завершается немедленно, она может не отправлять все байты, запрошенные в одной операции. Приложение несет ответственность за отслеживание количества отправленных байтов и повторения операции до тех пор, пока приложение не отправит запрошенное число байтов. Кроме того, нет никаких гарантий, что отправляемые данные будут отображаться в сети немедленно. Чтобы повысить эффективность сети, базовая система может отложить передачу до того, как собирается значительный объем передаваемых данных. Успешное SendTo завершение метода означает, что базовая система имела место для буферизации данных для отправки сетей.
Если вы используете протокол без подключения в режиме блокировки, SendTo будет блокироваться до отправки диаграммы данных. Если вы хотите отправить данные на широковещательный адрес, необходимо сначала вызвать SetSocketOption метод и задать для него параметр SocketOptionName.Broadcastсокета. Кроме того, необходимо убедиться, что размер не превышает максимальный размер пакета базового поставщика услуг. Если это так, то диаграмма данных не будет отправлена SocketExceptionи SendTo вызовет исключение.
Замечание
При получении SocketExceptionсвойства используйте SocketException.ErrorCode свойство для получения определенного кода ошибки. Получив этот код, ознакомьтесь с документацией по коду ошибки API сокетов Windows версии 2 , чтобы получить подробное описание ошибки.
Замечание
Этот элемент выводит сведения о трассировке при включении трассировки сети в приложении. Дополнительные сведения см. в разделе "Трассировка сети" в .NET Framework.
См. также раздел
- Connect(EndPoint)
- Bind(EndPoint)
- Send(Byte[], Int32, SocketFlags)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
- LocalEndPoint
Применяется к
SendTo(Byte[], Int32, SocketFlags, EndPoint)
- Исходный код:
- Socket.cs
- Исходный код:
- Socket.cs
- Исходный код:
- Socket.cs
- Исходный код:
- Socket.cs
- Исходный код:
- Socket.cs
Отправляет указанное число байтов данных в указанную конечную точку с помощью указанной SocketFlags.
public:
int SendTo(cli::array <System::Byte> ^ buffer, int size, System::Net::Sockets::SocketFlags socketFlags, System::Net::EndPoint ^ remoteEP);
public int SendTo(byte[] buffer, int size, System.Net.Sockets.SocketFlags socketFlags, System.Net.EndPoint remoteEP);
member this.SendTo : byte[] * int * System.Net.Sockets.SocketFlags * System.Net.EndPoint -> int
Public Function SendTo (buffer As Byte(), size As Integer, socketFlags As SocketFlags, remoteEP As EndPoint) As Integer
Параметры
- size
- Int32
Количество байтов для отправки.
- socketFlags
- SocketFlags
Побитовое сочетание значений SocketFlags .
Возвращаемое значение
Число отправленных байтов.
Исключения
size Указанный размер превышает размерbuffer.
Произошла ошибка при попытке доступа к сокету.
Он Socket был закрыт.
Примеры
В следующем примере кода отправляется диаграмма без подключения к указанному удаленному узлу. Размер и SocketFlags передается методу SendTo .
public static void SendTo3()
{
IPHostEntry hostEntry = Dns.GetHostEntry(Dns.GetHostName());
IPEndPoint endPoint = new IPEndPoint(hostEntry.AddressList[0], 11000);
Socket s = new Socket(endPoint.Address.AddressFamily,
SocketType.Dgram,
ProtocolType.Udp);
byte[] msg = Encoding.ASCII.GetBytes("This is a test");
Console.WriteLine("Sending data.");
// This call blocks.
s.SendTo(msg, msg.Length, SocketFlags.None, endPoint);
s.Close();
}
Public Shared Sub SendTo3()
Dim hostEntry As IPHostEntry = Dns.GetHostEntry(Dns.GetHostName())
Dim endPoint As New IPEndPoint(hostEntry.AddressList(0), 11000)
Dim s As New Socket(endPoint.Address.AddressFamily, SocketType.Dgram, ProtocolType.Udp)
Dim msg As Byte() = Encoding.ASCII.GetBytes("This is a test")
Console.WriteLine("Sending data.")
' This call blocks.
s.SendTo(msg, msg.Length, SocketFlags.None, endPoint)
s.Close()
End Sub
Комментарии
В этой перегрузке смещение буфера по умолчанию — 0. Если в качестве socketflags параметра указать DontRoute флаг, то отправляемые данные не будут перенаправлены.
Если вы используете протокол без подключения, вам не нужно устанавливать удаленный узел по умолчанию с Connect методом перед вызовом SendTo. Это необходимо сделать только в том случае, если вы планируете вызвать Send метод. При вызове Connect метода перед вызовом SendToremoteEP параметр переопределит указанный удаленный узел по умолчанию только для этой операции отправки. Для вызова Bind метода также не требуется, так как базовый поставщик услуг назначит наиболее подходящий адрес локальной сети и номер порта. Если необходимо определить назначенный адрес локальной сети и номер порта, можно использовать LocalEndPoint свойство после успешного SendTo завершения метода.
Хотя он предназначен для протоколов без подключения, также работает с протоколами, SendTo ориентированными на подключение. Если вы используете протокол, ориентированный на подключение, необходимо сначала установить подключение к удаленному узлу, вызвав Connect метод или приняв входящий запрос подключения с помощью Accept метода. Если вы не устанавливаете или не принимаете подключение к удаленному узлу, SendTo вызовет исключение SocketException. Вы также можете установить удаленный узел по умолчанию для протокола без подключения перед вызовом SendTo метода. В любом из этих случаев SendTo параметр будет игнорироваться remoteEP и отправлять данные только на подключенный или удаленный узел по умолчанию.
Блокирующие сокеты блокируются до тех пор, пока не будет отправлено запрошенное число байтов. Так как неблокирование Socket завершается немедленно, он может не отправлять все байты, запрошенные в одной операции. Это ответственность вашего приложения за отслеживание количества отправленных байтов и повторения операции до тех пор, пока приложение не отправит запрошенное число байтов. Кроме того, нет никаких гарантий, что отправляемые данные будут отображаться в сети немедленно. Чтобы повысить эффективность сети, базовая система может отложить передачу до того, как собирается значительный объем передаваемых данных. Успешное SendTo завершение метода означает, что базовая система имела место для буферизации данных для отправки сетей.
Если вы используете протокол без подключения в режиме блокировки, SendTo будет блокироваться до отправки диаграммы данных. Если вы хотите отправить данные на широковещательный адрес, необходимо сначала вызвать SetSocketOption метод и задать для него параметр SocketOptionName.Broadcastсокета. Необходимо также убедиться, что количество отправленных байтов не превышает максимальный размер пакета базового поставщика услуг. Если это так, то диаграмма данных не будет отправлена SocketExceptionи SendTo вызовет исключение.
Замечание
При получении SocketExceptionсвойства используйте SocketException.ErrorCode свойство для получения определенного кода ошибки. Получив этот код, ознакомьтесь с документацией по коду ошибки API сокетов Windows версии 2 , чтобы получить подробное описание ошибки.
Замечание
Этот элемент выводит сведения о трассировке при включении трассировки сети в приложении. Дополнительные сведения см. в разделе "Трассировка сети" в .NET Framework.
См. также раздел
- Connect(EndPoint)
- Bind(EndPoint)
- Send(Byte[], Int32, SocketFlags)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
- LocalEndPoint
Применяется к
SendTo(ReadOnlySpan<Byte>, SocketFlags, SocketAddress)
- Исходный код:
- Socket.cs
- Исходный код:
- Socket.cs
- Исходный код:
- Socket.cs
- Исходный код:
- Socket.cs
Отправляет данные в определенную конечную точку с помощью указанной SocketFlags.
public:
int SendTo(ReadOnlySpan<System::Byte> buffer, System::Net::Sockets::SocketFlags socketFlags, System::Net::SocketAddress ^ socketAddress);
public int SendTo(ReadOnlySpan<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, System.Net.SocketAddress socketAddress);
member this.SendTo : ReadOnlySpan<byte> * System.Net.Sockets.SocketFlags * System.Net.SocketAddress -> int
Public Function SendTo (buffer As ReadOnlySpan(Of Byte), socketFlags As SocketFlags, socketAddress As SocketAddress) As Integer
Параметры
- buffer
- ReadOnlySpan<Byte>
Диапазон байтов, содержащих отправленные данные.
- socketFlags
- SocketFlags
Побитовое сочетание значений SocketFlags , которые будут использоваться при отправке данных.
- socketAddress
- SocketAddress
Объект SocketAddress , представляющий место назначения для данных.
Возвращаемое значение
Число отправленных байтов.
Исключения
socketAddress равно null.
Произошла ошибка при попытке доступа к сокету.
Он Socket был закрыт.
Применяется к
SendTo(ReadOnlySpan<Byte>, EndPoint)
- Исходный код:
- Socket.cs
- Исходный код:
- Socket.cs
- Исходный код:
- Socket.cs
- Исходный код:
- Socket.cs
- Исходный код:
- Socket.cs
Отправляет данные в указанную конечную точку.
public:
int SendTo(ReadOnlySpan<System::Byte> buffer, System::Net::EndPoint ^ remoteEP);
public int SendTo(ReadOnlySpan<byte> buffer, System.Net.EndPoint remoteEP);
member this.SendTo : ReadOnlySpan<byte> * System.Net.EndPoint -> int
Public Function SendTo (buffer As ReadOnlySpan(Of Byte), remoteEP As EndPoint) As Integer
Параметры
- buffer
- ReadOnlySpan<Byte>
Диапазон байтов, содержащих отправленные данные.
Возвращаемое значение
Число отправленных байтов.
Исключения
remoteEP равно null.
Произошла ошибка при попытке доступа к сокету.
Он Socket был закрыт.
Применяется к
SendTo(Byte[], SocketFlags, EndPoint)
- Исходный код:
- Socket.cs
- Исходный код:
- Socket.cs
- Исходный код:
- Socket.cs
- Исходный код:
- Socket.cs
- Исходный код:
- Socket.cs
Отправляет данные в определенную конечную точку с помощью указанной SocketFlags.
public:
int SendTo(cli::array <System::Byte> ^ buffer, System::Net::Sockets::SocketFlags socketFlags, System::Net::EndPoint ^ remoteEP);
public int SendTo(byte[] buffer, System.Net.Sockets.SocketFlags socketFlags, System.Net.EndPoint remoteEP);
member this.SendTo : byte[] * System.Net.Sockets.SocketFlags * System.Net.EndPoint -> int
Public Function SendTo (buffer As Byte(), socketFlags As SocketFlags, remoteEP As EndPoint) As Integer
Параметры
- socketFlags
- SocketFlags
Побитовое сочетание значений SocketFlags .
Возвращаемое значение
Число отправленных байтов.
Исключения
Произошла ошибка при попытке доступа к сокету.
Он Socket был закрыт.
Примеры
В следующем примере кода отправляется диаграмма без подключения к указанному удаленному узлу. SocketFlags передаются методу SendTo .
public static void SendTo2()
{
IPHostEntry hostEntry = Dns.GetHostEntry(Dns.GetHostName());
IPEndPoint endPoint = new IPEndPoint(hostEntry.AddressList[0], 11000);
Socket s = new Socket(endPoint.Address.AddressFamily,
SocketType.Dgram,
ProtocolType.Udp);
byte[] msg = Encoding.ASCII.GetBytes("This is a test");
Console.WriteLine("Sending data.");
// This call blocks.
s.SendTo(msg, SocketFlags.None, endPoint);
s.Close();
}
Public Shared Sub SendTo2()
Dim hostEntry As IPHostEntry = Dns.GetHostEntry(Dns.GetHostName())
Dim endPoint As New IPEndPoint(hostEntry.AddressList(0), 11000)
Dim s As New Socket(endPoint.Address.AddressFamily, SocketType.Dgram, ProtocolType.Udp)
Dim msg As Byte() = Encoding.ASCII.GetBytes("This is a test")
Console.WriteLine("Sending data.")
' This call blocks.
s.SendTo(msg, SocketFlags.None, endPoint)
s.Close()
End Sub
Комментарии
В этой перегрузке смещение буфера по умолчанию — 0, а число байтов для отправки значений по умолчанию — размер buffer. Если в качестве socketflags параметра указать DontRoute флаг, то отправляемые данные не будут перенаправлены.
Если вы используете протокол без подключения, вам не нужно устанавливать удаленный узел по умолчанию с Connect методом перед вызовом SendTo. Это необходимо сделать только в том случае, если вы планируете вызвать Send метод. При вызове Connect метода перед вызовом SendToremoteEP параметр переопределит указанный удаленный узел по умолчанию только для этой операции отправки. Для вызова Bind метода также не требуется, так как базовый поставщик услуг назначит наиболее подходящий адрес локальной сети и номер порта. Если необходимо определить назначенный адрес локальной сети и номер порта, можно использовать LocalEndPoint свойство после успешного SendTo завершения метода.
Хотя он предназначен для протоколов без подключения, также работает с протоколами, SendTo ориентированными на подключение. Если вы используете протокол, ориентированный на подключение, необходимо сначала установить подключение к удаленному узлу, вызвав Connect метод или приняв входящий запрос подключения с помощью Accept метода. Если вы не устанавливаете или не принимаете подключение к удаленному узлу, SendTo вызовет исключение SocketException. Вы также можете установить удаленный узел по умолчанию для протокола без подключения перед вызовом SendTo метода. В любом из этих случаев SendTo параметр будет игнорироваться remoteEP и отправлять данные только на подключенный или удаленный узел по умолчанию.
Блокирующие сокеты блокируются до тех пор, пока не будут отправлены все запрошенные байты.buffer Так как неблокировка Socket завершается немедленно, она может не отправлять все байты в элементе buffer. Это ответственность вашего приложения за отслеживание количества отправленных байтов и повторных попыток операции до тех пор, пока приложение не отправит все байты в нем buffer. Кроме того, нет никаких гарантий, что отправляемые данные будут отображаться в сети немедленно. Чтобы повысить эффективность сети, базовая система может отложить передачу до того, как собирается значительный объем передаваемых данных. Успешное SendTo завершение метода означает, что базовая система имела место для буферизации данных для отправки сетей.
Если вы используете протокол без подключения в режиме блокировки, SendTo будет блокироваться до отправки диаграммы данных. Если вы хотите отправить данные на широковещательный адрес, необходимо сначала вызвать SetSocketOption метод и задать для него параметр SocketOptionName.Broadcastсокета. Необходимо также убедиться, что количество отправленных байтов не превышает максимальный размер пакета базового поставщика услуг. Если это так, то диаграмма данных не будет отправлена SocketExceptionи SendTo вызовет исключение.
Замечание
При получении SocketExceptionсвойства используйте SocketException.ErrorCode свойство для получения определенного кода ошибки. Получив этот код, ознакомьтесь с документацией по коду ошибки API сокетов Windows версии 2 , чтобы получить подробное описание ошибки.
Замечание
Этот элемент выводит сведения о трассировке при включении трассировки сети в приложении. Дополнительные сведения см. в разделе "Трассировка сети" в .NET Framework.
См. также раздел
- Connect(EndPoint)
- Bind(EndPoint)
- Send(Byte[], Int32, SocketFlags)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
- LocalEndPoint
Применяется к
SendTo(Byte[], EndPoint)
- Исходный код:
- Socket.cs
- Исходный код:
- Socket.cs
- Исходный код:
- Socket.cs
- Исходный код:
- Socket.cs
- Исходный код:
- Socket.cs
Отправляет данные в указанную конечную точку.
public:
int SendTo(cli::array <System::Byte> ^ buffer, System::Net::EndPoint ^ remoteEP);
public int SendTo(byte[] buffer, System.Net.EndPoint remoteEP);
member this.SendTo : byte[] * System.Net.EndPoint -> int
Public Function SendTo (buffer As Byte(), remoteEP As EndPoint) As Integer
Параметры
Возвращаемое значение
Число отправленных байтов.
Исключения
Произошла ошибка при попытке доступа к сокету.
Он Socket был закрыт.
Примеры
В следующем примере кода отправляется диаграмма без подключения к указанному удаленному узлу.
public static void SendTo1()
{
IPHostEntry hostEntry = Dns.GetHostEntry(Dns.GetHostName());
IPEndPoint endPoint = new IPEndPoint(hostEntry.AddressList[0], 11000);
Socket s = new Socket(endPoint.Address.AddressFamily,
SocketType.Dgram,
ProtocolType.Udp);
byte[] msg = Encoding.ASCII.GetBytes("This is a test");
Console.WriteLine("Sending data.");
// This call blocks.
s.SendTo(msg, endPoint);
s.Close();
}
Public Shared Sub SendTo1()
Dim hostEntry As IPHostEntry = Dns.GetHostEntry(Dns.GetHostName())
Dim endPoint As New IPEndPoint(hostEntry.AddressList(0), 11000)
Dim s As New Socket(endPoint.Address.AddressFamily, SocketType.Dgram, ProtocolType.Udp)
Dim msg As Byte() = Encoding.ASCII.GetBytes("This is a test")
Console.WriteLine("Sending data.")
' This call blocks.
s.SendTo(msg, endPoint)
s.Close()
End Sub
Комментарии
В этой перегрузке смещение буфера по умолчанию равно 0, количество байтов для отправки по умолчанию в размер buffer параметра, а SocketFlags значение по умолчанию — 0.
Если вы используете протокол без подключения, вам не нужно устанавливать удаленный узел по умолчанию с Connect методом перед вызовом SendTo. Это необходимо сделать только в том случае, если вы планируете вызвать Send метод. При вызове Connect метода перед вызовом SendToremoteEP параметр переопределит указанный удаленный узел по умолчанию только для этой операции отправки. Для вызова Bind метода также не требуется, так как базовый поставщик услуг назначит наиболее подходящий адрес локальной сети и номер порта. Если необходимо определить назначенный адрес локальной сети и номер порта, можно использовать LocalEndPoint свойство после успешного SendTo завершения метода.
Хотя он предназначен для протоколов без подключения, также работает с протоколами, SendTo ориентированными на подключение. Если вы используете протокол, ориентированный на подключение, необходимо сначала установить подключение к удаленному узлу, вызвав Connect метод или приняв входящий запрос подключения с помощью Accept метода. Если вы не устанавливаете или не принимаете подключение к удаленному узлу, SendTo вызовет исключение SocketException. Вы также можете установить удаленный узел по умолчанию для протокола без подключения перед вызовом SendTo метода. В любом из этих случаев SendTo параметр будет игнорироваться remoteEP и отправлять данные только на подключенный или удаленный узел по умолчанию.
Блокирующие сокеты блокируются до тех пор, пока не будут отправлены все байты в буфере. Так как неблокировка Socket завершается немедленно, она может не отправлять все байты в элементе buffer. Это ответственность вашего приложения за отслеживание количества отправленных байтов и повторных попыток операции до тех пор, пока приложение не отправит все байты в нем buffer. Кроме того, нет никаких гарантий, что отправляемые данные будут отображаться в сети немедленно. Чтобы повысить эффективность сети, базовая система может отложить передачу, пока не будет собран значительный объем исходящих данных. Успешное SendTo завершение метода означает, что базовая система имела место для буферизации данных для отправки сетей.
Если вы используете протокол без подключения в режиме блокировки, SendTo будет блокироваться до отправки диаграммы данных. Если вы хотите отправить данные на широковещательный адрес, необходимо сначала вызвать SetSocketOption метод и задать для него параметр SocketOptionName.Broadcastсокета. Необходимо также убедиться, что количество отправленных байтов не превышает максимальный размер пакета базового поставщика услуг. Если это так, то диаграмма данных не будет отправлена SocketExceptionи SendTo вызовет исключение.
Замечание
При получении SocketExceptionсвойства используйте SocketException.ErrorCode свойство для получения определенного кода ошибки. Получив этот код, ознакомьтесь с документацией по коду ошибки API сокетов Windows версии 2 , чтобы получить подробное описание ошибки.
Замечание
Этот элемент выводит сведения о трассировке при включении трассировки сети в приложении. Дополнительные сведения см. в разделе "Трассировка сети" в .NET Framework.
См. также раздел
- Connect(EndPoint)
- Bind(EndPoint)
- Send(Byte[], Int32, SocketFlags)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
- LocalEndPoint
Применяется к
SendTo(ReadOnlySpan<Byte>, SocketFlags, EndPoint)
- Исходный код:
- Socket.cs
- Исходный код:
- Socket.cs
- Исходный код:
- Socket.cs
- Исходный код:
- Socket.cs
- Исходный код:
- Socket.cs
Отправляет данные в определенную конечную точку с помощью указанной SocketFlags.
public:
int SendTo(ReadOnlySpan<System::Byte> buffer, System::Net::Sockets::SocketFlags socketFlags, System::Net::EndPoint ^ remoteEP);
public int SendTo(ReadOnlySpan<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, System.Net.EndPoint remoteEP);
member this.SendTo : ReadOnlySpan<byte> * System.Net.Sockets.SocketFlags * System.Net.EndPoint -> int
Public Function SendTo (buffer As ReadOnlySpan(Of Byte), socketFlags As SocketFlags, remoteEP As EndPoint) As Integer
Параметры
- buffer
- ReadOnlySpan<Byte>
Диапазон байтов, содержащих отправленные данные.
- socketFlags
- SocketFlags
Побитовое сочетание значений SocketFlags .
Возвращаемое значение
Число отправленных байтов.
Исключения
remoteEP равно null.
Произошла ошибка при попытке доступа к сокету.
Он Socket был закрыт.