Socket.SendTo Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Envia dados para um ponto de extremidade específico.
Sobrecargas
SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint) |
Envia o número especificado de bytes de dados para o ponto de extremidade especificado, começando no local especificado no buffer e usando o SocketFlags especificado. |
SendTo(Byte[], Int32, SocketFlags, EndPoint) |
Envia o número especificado de bytes de dados para um ponto de extremidade especificado usando o SocketFlags especificado. |
SendTo(ReadOnlySpan<Byte>, SocketFlags, SocketAddress) |
Envia dados para um ponto de extremidade específico usando o SocketFlags especificado. |
SendTo(ReadOnlySpan<Byte>, EndPoint) |
Envia dados ao ponto de extremidade especificado. |
SendTo(Byte[], SocketFlags, EndPoint) |
Envia dados para um ponto de extremidade específico usando o SocketFlags especificado. |
SendTo(Byte[], EndPoint) |
Envia dados ao ponto de extremidade especificado. |
SendTo(ReadOnlySpan<Byte>, SocketFlags, EndPoint) |
Envia dados para um ponto de extremidade específico usando o SocketFlags especificado. |
SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- Origem:
- Socket.cs
- Origem:
- Socket.cs
- Origem:
- Socket.cs
Envia o número especificado de bytes de dados para o ponto de extremidade especificado, começando no local especificado no buffer e usando o SocketFlags especificado.
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
Parâmetros
- offset
- Int32
A posição no buffer de dados na qual o envio de dados deve começar.
- size
- Int32
O número de bytes a serem enviados.
- socketFlags
- SocketFlags
Uma combinação bit a bit dos valores SocketFlags.
Retornos
O número de bytes enviados.
Exceções
offset
é menor que 0.
- ou -
offset
é maior que o comprimento do buffer
.
- ou -
size
é menor que 0.
- ou -
size
é maior que o comprimento da subtração de buffer
e do valor do parâmetro offset
.
socketFlags
não é uma combinação válida de valores.
- ou -
Ocorre um erro de sistema operacional ao acessar o Socket.
O Socket foi fechado.
Um chamador na pilha de chamadas não tem as permissões necessárias.
Exemplos
O exemplo de código a seguir envia um datagrama sem conexão para o host remoto especificado. O deslocamento, o tamanho e SocketFlags são passados para o SendTo método .
static void SendTo4()
{
IPHostEntry^ hostEntry = Dns::Resolve( Dns::GetHostName() );
IPEndPoint^ endPoint = gcnew IPEndPoint( hostEntry->AddressList[ 0 ],11000 );
Socket^ s = gcnew Socket( endPoint->Address->AddressFamily,
SocketType::Dgram,
ProtocolType::Udp );
array<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 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
Comentários
Nessa sobrecarga, se você especificar o DontRoute sinalizador como o socketflags
parâmetro , os dados que você está enviando não serão roteado.
Se você estiver usando um protocolo sem conexão, não será necessário estabelecer um host remoto padrão com o Connect método antes de chamar SendTo. Você só precisará fazer isso se pretender chamar o Send método . Se você chamar o Connect método antes de chamar SendTo, o remoteEP
parâmetro substituirá o host remoto padrão especificado somente para essa operação de envio. Você também não precisa chamar o Bind método , pois o provedor de serviços subjacente atribuirá o endereço de rede local e o número da porta mais apropriados. Se você precisar identificar o endereço de rede local atribuído e o número da porta, poderá usar a LocalEndPoint propriedade depois que o SendTo método for concluído com êxito.
Embora destinado a protocolos sem conexão, SendTo também funciona com protocolos orientados a conexão. Se você estiver usando um protocolo orientado a conexão, primeiro estabeleça uma conexão de host remoto chamando o Connect método ou aceite uma solicitação de conexão de entrada usando o Accept método . Se você não estabelecer ou aceitar uma conexão de host remoto, SendTo gerará um SocketException. Você também pode estabelecer um host remoto padrão para um protocolo sem conexão antes de chamar o SendTo método . Em qualquer um desses casos, SendTo ignorará o remoteEP
parâmetro e enviará apenas dados para o host remoto conectado ou padrão.
O bloqueio de soquetes será bloqueado até que o número solicitado de bytes seja enviado. Como um não bloqueio Socket é concluído imediatamente, ele pode não enviar todos os bytes solicitados em uma única operação. É responsabilidade de seus aplicativos controlar o número de bytes enviados e repetir a operação até que o aplicativo envie o número solicitado de bytes. Também não há nenhuma garantia de que os dados enviados serão exibidos na rede imediatamente. Para aumentar a eficiência da rede, o sistema subjacente pode atrasar a transmissão até que uma quantidade significativa de dados desatualizados seja coletada. Uma conclusão bem-sucedida do SendTo método significa que o sistema subjacente teve espaço para armazenar seus dados em buffer para um envio de rede.
Se você estiver usando um protocolo sem conexão no modo de bloqueio, SendTo será bloqueado até que o datagrama seja enviado. Se você quiser enviar dados para um endereço de difusão, primeiro chame o SetSocketOption método e defina a opção de soquete como SocketOptionName.Broadcast. Você também deve ter certeza de que o tamanho não excede o tamanho máximo do pacote do provedor de serviços subjacente. Se isso acontecer, o datagrama não será enviado e SendTo gerará um SocketException.
Observação
Se você receber um SocketException, use a SocketException.ErrorCode propriedade para obter o código de erro específico. Depois de obter esse código, consulte a documentação do código de erro da API do Windows Sockets versão 2 para obter uma descrição detalhada do erro.
Observação
Esse membro emite o rastreamento de informações quando você ativa o rastreamento de rede em seu aplicativo. Para obter mais informações, consulte Rastreamento de rede em .NET Framework.
Confira também
- Connect(EndPoint)
- Bind(EndPoint)
- Send(Byte[], Int32, SocketFlags)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
- LocalEndPoint
Aplica-se a
SendTo(Byte[], Int32, SocketFlags, EndPoint)
- Origem:
- Socket.cs
- Origem:
- Socket.cs
- Origem:
- Socket.cs
Envia o número especificado de bytes de dados para um ponto de extremidade especificado usando o SocketFlags especificado.
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
Parâmetros
- size
- Int32
O número de bytes a serem enviados.
- socketFlags
- SocketFlags
Uma combinação bit a bit dos valores SocketFlags.
Retornos
O número de bytes enviados.
Exceções
O size
especificado excede o tamanho de buffer
.
Ocorreu um erro ao tentar acessar o soquete.
O Socket foi fechado.
Exemplos
O exemplo de código a seguir envia um datagrama sem conexão para o host remoto especificado. O tamanho e SocketFlags são passados para o SendTo método .
static void SendTo3()
{
IPHostEntry^ hostEntry = Dns::Resolve( Dns::GetHostName() );
IPEndPoint^ endPoint = gcnew IPEndPoint( hostEntry->AddressList[ 0 ],11000 );
Socket^ s = gcnew Socket( endPoint->Address->AddressFamily,
SocketType::Dgram,
ProtocolType::Udp );
array<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 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
Comentários
Nessa sobrecarga, o deslocamento do buffer assume como padrão 0. Se você especificar o DontRoute sinalizador como o socketflags
parâmetro , os dados que você está enviando não serão roteado.
Se você estiver usando um protocolo sem conexão, não será necessário estabelecer um host remoto padrão com o Connect método antes de chamar SendTo. Você só precisará fazer isso se pretender chamar o Send método . Se você chamar o Connect método antes de chamar SendTo, o remoteEP
parâmetro substituirá o host remoto padrão especificado somente para essa operação de envio. Você também não precisa chamar o Bind método , pois o provedor de serviços subjacente atribuirá o endereço de rede local e o número da porta mais apropriados. Se você precisar identificar o endereço de rede local atribuído e o número da porta, poderá usar a LocalEndPoint propriedade depois que o SendTo método for concluído com êxito.
Embora destinado a protocolos sem conexão, SendTo também funciona com protocolos orientados a conexão. Se você estiver usando um protocolo orientado a conexão, primeiro estabeleça uma conexão de host remoto chamando o Connect método ou aceite uma solicitação de conexão de entrada usando o Accept método . Se você não estabelecer ou aceitar uma conexão de host remoto, SendTo gerará um SocketException. Você também pode estabelecer um host remoto padrão para um protocolo sem conexão antes de chamar o SendTo método . Em qualquer um desses casos, SendTo ignorará o remoteEP
parâmetro e enviará apenas dados para o host remoto conectado ou padrão.
O bloqueio de soquetes será bloqueado até que o número solicitado de bytes seja enviado. Como um não desbloqueio Socket é concluído imediatamente, ele pode não enviar todos os bytes solicitados em uma única operação. É responsabilidade do aplicativo controlar o número de bytes enviados e repetir a operação até que o aplicativo envie o número solicitado de bytes. Também não há nenhuma garantia de que os dados enviados serão exibidos na rede imediatamente. Para aumentar a eficiência da rede, o sistema subjacente pode atrasar a transmissão até que uma quantidade significativa de dados desatualizados seja coletada. Uma conclusão bem-sucedida do SendTo método significa que o sistema subjacente teve espaço para armazenar seus dados em buffer para um envio de rede.
Se você estiver usando um protocolo sem conexão no modo de bloqueio, SendTo será bloqueado até que o datagrama seja enviado. Se você quiser enviar dados para um endereço de difusão, primeiro chame o SetSocketOption método e defina a opção de soquete como SocketOptionName.Broadcast. Você também deve ter certeza de que o número de bytes enviados não excede o tamanho máximo do pacote do provedor de serviços subjacente. Se isso acontecer, o datagrama não será enviado e SendTo gerará um SocketException.
Observação
Se você receber um SocketException, use a SocketException.ErrorCode propriedade para obter o código de erro específico. Depois de obter esse código, consulte a documentação do código de erro da API do Windows Sockets versão 2 para obter uma descrição detalhada do erro.
Observação
Esse membro emite o rastreamento de informações quando você ativa o rastreamento de rede em seu aplicativo. Para obter mais informações, consulte Rastreamento de rede em .NET Framework.
Confira também
- Connect(EndPoint)
- Bind(EndPoint)
- Send(Byte[], Int32, SocketFlags)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
- LocalEndPoint
Aplica-se a
SendTo(ReadOnlySpan<Byte>, SocketFlags, SocketAddress)
- Origem:
- Socket.cs
- Origem:
- Socket.cs
Envia dados para um ponto de extremidade específico usando o SocketFlags especificado.
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
Parâmetros
- buffer
- ReadOnlySpan<Byte>
Um intervalo de bytes que contém os dados a serem enviados.
- socketFlags
- SocketFlags
Uma combinação bit a bit dos SocketFlags valores que serão usados ao enviar os dados.
- socketAddress
- SocketAddress
O SocketAddress que representa o destino dos dados.
Retornos
O número de bytes enviados.
Exceções
socketAddress
é null
.
Ocorreu um erro ao tentar acessar o soquete.
O Socket foi fechado.
Aplica-se a
SendTo(ReadOnlySpan<Byte>, EndPoint)
- Origem:
- Socket.cs
- Origem:
- Socket.cs
- Origem:
- Socket.cs
Envia dados ao ponto de extremidade especificado.
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
Parâmetros
- buffer
- ReadOnlySpan<Byte>
Um intervalo de bytes que contém os dados a serem enviados.
Retornos
O número de bytes enviados.
Exceções
remoteEP
é null
.
Ocorreu um erro ao tentar acessar o soquete.
O Socket foi fechado.
Aplica-se a
SendTo(Byte[], SocketFlags, EndPoint)
- Origem:
- Socket.cs
- Origem:
- Socket.cs
- Origem:
- Socket.cs
Envia dados para um ponto de extremidade específico usando o SocketFlags especificado.
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
Parâmetros
- socketFlags
- SocketFlags
Uma combinação bit a bit dos valores SocketFlags.
Retornos
O número de bytes enviados.
Exceções
Ocorreu um erro ao tentar acessar o soquete.
O Socket foi fechado.
Exemplos
O exemplo de código a seguir envia um datagrama sem conexão para o host remoto especificado. SocketFlags são passados para o SendTo método .
static void SendTo2()
{
IPHostEntry^ hostEntry = Dns::Resolve( Dns::GetHostName() );
IPEndPoint^ endPoint = gcnew IPEndPoint( hostEntry->AddressList[ 0 ],11000 );
Socket^ s = gcnew Socket( endPoint->Address->AddressFamily,
SocketType::Dgram,
ProtocolType::Udp );
array<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 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
Comentários
Nessa sobrecarga, o deslocamento de buffer usa como padrão 0 e o número de bytes para enviar padrões para o tamanho do buffer
. Se você especificar o DontRoute sinalizador como o socketflags
parâmetro , os dados que você está enviando não serão roteado.
Se você estiver usando um protocolo sem conexão, não precisará estabelecer um host remoto padrão com o Connect método antes de chamar SendTo. Você só precisa fazer isso se pretende chamar o Send método . Se você chamar o Connect método antes de chamar SendTo, o remoteEP
parâmetro substituirá o host remoto padrão especificado somente para essa operação de envio. Você também não precisa chamar o Bind método, pois o provedor de serviços subjacente atribuirá o endereço de rede local e o número da porta mais apropriados. Se você precisar identificar o endereço de rede local atribuído e o número da porta, poderá usar a LocalEndPoint propriedade depois que o SendTo método for concluído com êxito.
Embora pretenda protocolos sem conexão, SendTo também funciona com protocolos orientados a conexão. Se você estiver usando um protocolo orientado à conexão, primeiro deverá estabelecer uma conexão de host remoto chamando o Connect método ou aceitar uma solicitação de conexão de entrada usando o Accept método . Se você não estabelecer ou aceitar uma conexão de host remoto, SendTo gerará um SocketException. Você também pode estabelecer um host remoto padrão para um protocolo sem conexão antes de chamar o SendTo método . Em qualquer um desses casos, SendTo ignorará o remoteEP
parâmetro e enviará apenas dados para o host remoto conectado ou padrão.
O bloqueio de soquetes será bloqueado até que todos os bytes solicitados no buffer
sejam enviados. Como um não desbloqueio Socket é concluído imediatamente, ele pode não enviar todos os bytes no buffer
. É responsabilidade do aplicativo controlar o número de bytes enviados e repetir a operação até que o aplicativo envie todos os bytes no buffer
. Também não há nenhuma garantia de que os dados enviados serão exibidos na rede imediatamente. Para aumentar a eficiência da rede, o sistema subjacente pode atrasar a transmissão até que uma quantidade significativa de dados pendentes seja coletada. Uma conclusão bem-sucedida do SendTo método significa que o sistema subjacente teve espaço para armazenar seus dados em buffer para um envio de rede.
Se você estiver usando um protocolo sem conexão no modo de bloqueio, SendTo bloqueará até que o datagrama seja enviado. Se você quiser enviar dados para um endereço de transmissão, primeiro chame o SetSocketOption método e defina a opção de soquete como SocketOptionName.Broadcast. Você também deve ter certeza de que o número de bytes enviados não excede o tamanho máximo do pacote do provedor de serviços subjacente. Se isso acontecer, o datagrama não será enviado e SendTo gerará um SocketException.
Observação
Se você receber um SocketException, use a SocketException.ErrorCode propriedade para obter o código de erro específico. Depois de obter esse código, consulte a documentação do código de erro da API do Windows Sockets versão 2 para obter uma descrição detalhada do erro.
Observação
Esse membro emite o rastreamento de informações quando você ativa o rastreamento de rede em seu aplicativo. Para obter mais informações, consulte Rastreamento de rede em .NET Framework.
Confira também
- Connect(EndPoint)
- Bind(EndPoint)
- Send(Byte[], Int32, SocketFlags)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
- LocalEndPoint
Aplica-se a
SendTo(Byte[], EndPoint)
- Origem:
- Socket.cs
- Origem:
- Socket.cs
- Origem:
- Socket.cs
Envia dados ao ponto de extremidade especificado.
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
Parâmetros
Retornos
O número de bytes enviados.
Exceções
Ocorreu um erro ao tentar acessar o soquete.
O Socket foi fechado.
Exemplos
O exemplo de código a seguir envia um datagrama sem conexão para o host remoto especificado.
static void SendTo1()
{
IPHostEntry^ hostEntry = Dns::Resolve( Dns::GetHostName() );
IPEndPoint^ endPoint = gcnew IPEndPoint( hostEntry->AddressList[ 0 ],11000 );
Socket^ s = gcnew Socket( endPoint->Address->AddressFamily,
SocketType::Dgram,
ProtocolType::Udp );
array<Byte>^ msg = Encoding::ASCII->GetBytes( "This is a test" );
Console::WriteLine( "Sending data." );
// This call blocks.
s->SendTo( msg, endPoint );
s->Close();
}
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
Comentários
Nessa sobrecarga, o deslocamento de buffer usa como padrão 0, o número de bytes para enviar padrões para o tamanho do buffer
parâmetro e o SocketFlags valor padrão é 0.
Se você estiver usando um protocolo sem conexão, não precisará estabelecer um host remoto padrão com o Connect método antes de chamar SendTo. Você só precisa fazer isso se pretende chamar o Send método . Se você chamar o Connect método antes de chamar SendTo, o remoteEP
parâmetro substituirá o host remoto padrão especificado somente para essa operação de envio. Você também não precisa chamar o Bind método, pois o provedor de serviços subjacente atribuirá o endereço de rede local e o número da porta mais apropriados. Se você precisar identificar o endereço de rede local atribuído e o número da porta, poderá usar a LocalEndPoint propriedade depois que o SendTo método for concluído com êxito.
Embora pretenda protocolos sem conexão, SendTo também funciona com protocolos orientados a conexão. Se você estiver usando um protocolo orientado à conexão, primeiro deverá estabelecer uma conexão de host remoto chamando o Connect método ou aceitar uma solicitação de conexão de entrada usando o Accept método . Se você não estabelecer ou aceitar uma conexão de host remoto, SendTo gerará um SocketException. Você também pode estabelecer um host remoto padrão para um protocolo sem conexão antes de chamar o SendTo método . Em qualquer um desses casos, SendTo ignorará o remoteEP
parâmetro e enviará apenas dados para o host remoto conectado ou padrão.
O bloqueio de soquetes será bloqueado até que todos os bytes no buffer sejam enviados. Como um não desbloqueio Socket é concluído imediatamente, ele pode não enviar todos os bytes no buffer
. É responsabilidade do aplicativo controlar o número de bytes enviados e repetir a operação até que o aplicativo envie todos os bytes no buffer
. Também não há nenhuma garantia de que os dados enviados serão exibidos na rede imediatamente. Para aumentar a eficiência da rede, o sistema subjacente pode atrasar a transmissão até que uma quantidade significativa de dados de saída seja coletada. Uma conclusão bem-sucedida do SendTo método significa que o sistema subjacente teve espaço para armazenar seus dados em buffer para um envio de rede.
Se você estiver usando um protocolo sem conexão no modo de bloqueio, SendTo bloqueará até que o datagrama seja enviado. Se você quiser enviar dados para um endereço de transmissão, primeiro chame o SetSocketOption método e defina a opção de soquete como SocketOptionName.Broadcast. Você também deve ter certeza de que o número de bytes enviados não excede o tamanho máximo do pacote do provedor de serviços subjacente. Se isso acontecer, o datagrama não será enviado e SendTo gerará um SocketException.
Observação
Se você receber um SocketException, use a SocketException.ErrorCode propriedade para obter o código de erro específico. Depois de obter esse código, consulte a documentação do código de erro da API do Windows Sockets versão 2 para obter uma descrição detalhada do erro.
Observação
Esse membro emite o rastreamento de informações quando você ativa o rastreamento de rede em seu aplicativo. Para obter mais informações, consulte Rastreamento de rede em .NET Framework.
Confira também
- Connect(EndPoint)
- Bind(EndPoint)
- Send(Byte[], Int32, SocketFlags)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
- LocalEndPoint
Aplica-se a
SendTo(ReadOnlySpan<Byte>, SocketFlags, EndPoint)
- Origem:
- Socket.cs
- Origem:
- Socket.cs
- Origem:
- Socket.cs
Envia dados para um ponto de extremidade específico usando o SocketFlags especificado.
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
Parâmetros
- buffer
- ReadOnlySpan<Byte>
Um intervalo de bytes que contém os dados a serem enviados.
- socketFlags
- SocketFlags
Uma combinação bit a bit dos valores SocketFlags.
Retornos
O número de bytes enviados.
Exceções
remoteEP
é null
.
Ocorreu um erro ao tentar acessar o soquete.
O Socket foi fechado.