Compartilhar via


Socket.SendTo Método

Definição

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

buffer
Byte[]

Uma matriz do tipo Byte que contém os dados a serem enviados.

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.

remoteEP
EndPoint

O EndPoint que representa o local de destino dos dados.

Retornos

O número de bytes enviados.

Exceções

buffer é null.

- ou -

remoteEP é null.

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.

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

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

buffer
Byte[]

Uma matriz do tipo Byte que contém os dados a serem enviados.

size
Int32

O número de bytes a serem enviados.

socketFlags
SocketFlags

Uma combinação bit a bit dos valores SocketFlags.

remoteEP
EndPoint

O EndPoint que representa o local de destino dos dados.

Retornos

O número de bytes enviados.

Exceções

buffer é null.

- ou -

remoteEP é null.

O size especificado excede o tamanho de buffer.

Ocorreu um erro ao tentar acessar o soquete.

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

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.

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.

remoteEP
EndPoint

O EndPoint que representa o destino dos dados.

Retornos

O número de bytes enviados.

Exceções

remoteEP é null.

Ocorreu um erro ao tentar acessar o soquete.

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

buffer
Byte[]

Uma matriz do tipo Byte que contém os dados a serem enviados.

socketFlags
SocketFlags

Uma combinação bit a bit dos valores SocketFlags.

remoteEP
EndPoint

O EndPoint que representa o local de destino dos dados.

Retornos

O número de bytes enviados.

Exceções

buffer é null.

- ou -

remoteEP é null.

Ocorreu um erro ao tentar acessar o soquete.

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

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

buffer
Byte[]

Uma matriz do tipo Byte que contém os dados a serem enviados.

remoteEP
EndPoint

O EndPoint que representa o destino dos dados.

Retornos

O número de bytes enviados.

Exceções

buffer é null.

- ou -

remoteEP é null.

Ocorreu um erro ao tentar acessar o soquete.

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

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.

remoteEP
EndPoint

O EndPoint que representa o destino dos dados.

Retornos

O número de bytes enviados.

Exceções

remoteEP é null.

Ocorreu um erro ao tentar acessar o soquete.

Aplica-se a