Socket.Send Método

Definição

Envia dados para um Socket conectado.

Sobrecargas

Send(ReadOnlySpan<Byte>, SocketFlags, SocketError)

Envia dados para um Socket conectado usando o SocketFlags especificado.

Send(ReadOnlySpan<Byte>)

Envia dados para um Socket conectado.

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

Envia o número especificado de bytes de dados para um Socket conectado, começando no deslocamento especificado e usando os SocketFlags especificados.

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

Envia o conjunto de buffers na lista para um Socket conectado, usando o SocketFlags especificado.

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

Envia o número especificado de bytes de dados para um Socket conectado, começando no deslocamento especificado e usando os SocketFlags especificados.

Send(Byte[], Int32, SocketFlags)

Envia o número especificado de bytes de dados para um Socket conectado, usando o SocketFlags especificado.

Send(IList<ArraySegment<Byte>>)

Envia o conjunto de buffers na lista para um Socket conectado.

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

Envia o conjunto de buffers na lista para um Socket conectado, usando o SocketFlags especificado.

Send(Byte[], SocketFlags)

Envia dados para um Socket conectado usando o SocketFlags especificado.

Send(ReadOnlySpan<Byte>, SocketFlags)

Envia dados para um Socket conectado usando o SocketFlags especificado.

Send(Byte[])

Envia dados para um Socket conectado.

Send(ReadOnlySpan<Byte>, SocketFlags, SocketError)

Origem:
Socket.cs
Origem:
Socket.cs
Origem:
Socket.cs

Envia dados para um Socket conectado usando o SocketFlags especificado.

public:
 int Send(ReadOnlySpan<System::Byte> buffer, System::Net::Sockets::SocketFlags socketFlags, [Runtime::InteropServices::Out] System::Net::Sockets::SocketError % errorCode);
public int Send (ReadOnlySpan<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode);
member this.Send : ReadOnlySpan<byte> * System.Net.Sockets.SocketFlags * SocketError -> int
Public Function Send (buffer As ReadOnlySpan(Of Byte), socketFlags As SocketFlags, ByRef errorCode As SocketError) 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 de enumeração que especifica os comportamentos de envio e recebimento.

errorCode
SocketError

Quando esse método é retornado, contém um dos valores de enumeração que define códigos de erro para o soquete.

Retornos

O número de bytes enviados para o Socket.

Exceções

Ocorreu um erro ao tentar acessar o soquete.

Comentários

Send envia dados de forma síncrona para o host remoto especificado no Connect método ou Accept e retorna o número de bytes enviados com êxito. Send pode ser usado para protocolos orientados a conexão e sem conexão.

Essa sobrecarga requer um buffer que contém os dados que você deseja enviar. O SocketFlags valor usa como padrão 0, o deslocamento de buffer é padrão para 0 e o número de bytes para enviar padrões para o tamanho do buffer.

Se você estiver usando um protocolo sem conexão, deverá chamar Connect antes de chamar esse método ou Send gerará um SocketException. Se você estiver usando um protocolo orientado à conexão, deverá usar Connect para estabelecer uma conexão de host remoto ou usar Accept para aceitar uma conexão de entrada.

Se você estiver usando um protocolo sem conexão e planeja enviar dados para vários hosts diferentes, deverá usar o SendTo método . Se você não usar o SendTo método , precisará chamar Connect antes de cada chamada para Send. Você pode usar SendTo mesmo depois de estabelecer um host remoto padrão com Connect. Você também pode alterar o host remoto padrão antes de chamar Send fazendo outra chamada para Connect.

Se você estiver usando um protocolo orientado à conexão, Send bloqueará até que todos os bytes no buffer sejam enviados, a menos que um tempo limite tenha sido definido usando Socket.SendTimeout. Se o valor de tempo limite tiver sido excedido, a Send chamada gerará um SocketException. No modo de não desbloqueio, Send pode ser concluído com êxito, mesmo que ele envie menos do que o número de bytes no buffer. É responsabilidade do aplicativo controlar o número de bytes enviados e repetir a operação até que o aplicativo envie os bytes no buffer. Também não há 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 Send método significa que o sistema subjacente teve espaço para armazenar seus dados em buffer para um envio de rede.

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.

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.

Importante

A conclusão bem-sucedida de um envio não indica que os dados foram entregues com êxito. Se nenhum espaço de buffer estiver disponível no sistema de transporte para manter os dados a serem transmitidos, o envio será bloqueado, a menos que o soquete tenha sido colocado no modo sem bloqueio.

Confira também

Aplica-se a

Send(ReadOnlySpan<Byte>)

Origem:
Socket.cs
Origem:
Socket.cs
Origem:
Socket.cs

Envia dados para um Socket conectado.

public:
 int Send(ReadOnlySpan<System::Byte> buffer);
public int Send (ReadOnlySpan<byte> buffer);
member this.Send : ReadOnlySpan<byte> -> int
Public Function Send (buffer As ReadOnlySpan(Of Byte)) 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 para o Socket.

Exceções

Ocorreu um erro ao tentar acessar o soquete.

Comentários

Send envia dados de forma síncrona para o host remoto especificado no Connect método ou Accept e retorna o número de bytes enviados com êxito. Send pode ser usado para protocolos orientados a conexão e sem conexão.

Essa sobrecarga requer um buffer que contém os dados que você deseja enviar. O SocketFlags valor usa como padrão 0, o deslocamento de buffer é padrão para 0 e o número de bytes para enviar padrões para o tamanho do buffer.

Se você estiver usando um protocolo sem conexão, deverá chamar Connect antes de chamar esse método ou Send gerará um SocketException. Se você estiver usando um protocolo orientado à conexão, deverá usar Connect para estabelecer uma conexão de host remoto ou usar Accept para aceitar uma conexão de entrada.

Se você estiver usando um protocolo sem conexão e planeja enviar dados para vários hosts diferentes, deverá usar o SendTo método . Se você não usar o SendTo método , precisará chamar Connect antes de cada chamada para Send. Você pode usar SendTo mesmo depois de ter estabelecido um host remoto padrão com Connect. Você também pode alterar o host remoto padrão antes de chamar Send fazendo outra chamada para Connect.

Se você estiver usando um protocolo orientado à conexão, Send bloqueará até que todos os bytes no buffer sejam enviados, a menos que um tempo limite tenha sido definido usando Socket.SendTimeout. Se o valor de tempo limite tiver sido excedido, a Send chamada gerará um SocketException. No modo de não desbloqueio, Send pode ser concluído com êxito, mesmo que ele envie menos do que o número de bytes no buffer. É responsabilidade do aplicativo controlar o número de bytes enviados e repetir a operação até que o aplicativo envie os bytes no buffer. Também não há 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 Send método significa que o sistema subjacente teve espaço para armazenar seus dados em buffer para um envio de rede.

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.

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.

Importante

A conclusão bem-sucedida de um envio não indica que os dados foram entregues com êxito. Se nenhum espaço de buffer estiver disponível no sistema de transporte para manter os dados a serem transmitidos, o envio será bloqueado, a menos que o soquete tenha sido colocado no modo sem bloqueio.

Confira também

Aplica-se a

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

Origem:
Socket.cs
Origem:
Socket.cs
Origem:
Socket.cs

Envia o número especificado de bytes de dados para um Socket conectado, começando no deslocamento especificado e usando os SocketFlags especificados.

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

errorCode
SocketError

Um objeto SocketError que armazena o erro de soquete.

Retornos

O número de bytes enviados para o Socket.

Exceções

buffer é 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.

Exemplos

O exemplo de código a seguir especifica o buffer de dados, um deslocamento, um tamanho e SocketFlags o envio de dados para um conectado Socket.

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

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

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

End Function 'SendReceiveTest4

Comentários

Send envia dados de forma síncrona para o host remoto especificado no Connect método ou Accept e retorna o número de bytes enviados com êxito. Send pode ser usado para protocolos orientados a conexão e sem conexão.

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, deverá chamar Connect antes de chamar esse método ou Send gerará um SocketException. Se você estiver usando um protocolo orientado a conexão, deverá usar Connect para estabelecer uma conexão de host remoto ou usar Accept para aceitar uma conexão de entrada.

Se você estiver usando um protocolo sem conexão e planeja enviar dados para vários hosts diferentes, deverá usar SendTo. Se você não usar SendTo, precisará chamar Connect antes de cada chamada para Send. Não há problema em usar SendTo mesmo depois de estabelecer um host remoto padrão com Connect. Você também pode alterar o host remoto padrão antes de chamar Send fazendo outra chamada para Connect.

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 Send gerará um SocketException.

Se você estiver usando um protocolo orientado a conexão, Send será bloqueado até que o número solicitado de bytes seja enviado, a menos que um tempo limite tenha sido definido usando Socket.SendTimeout. Se o valor de tempo limite tiver sido excedido, a Send chamada gerará um SocketException. No modo sem bloqueio, Send pode ser concluído com êxito, mesmo que ele envie menos do que o número de bytes solicitados. É 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 de saída seja coletada. Uma conclusão bem-sucedida do Send método significa que o sistema subjacente teve espaço para armazenar seus dados em buffer para um envio de rede.

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

A conclusão bem-sucedida de um envio não indica que os dados foram entregues com êxito. Se nenhum espaço de buffer estiver disponível no sistema de transporte para manter os dados a serem transmitidos, o envio será bloqueado, a menos que o soquete tenha sido colocado no modo sem bloqueio.

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

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

Origem:
Socket.cs
Origem:
Socket.cs
Origem:
Socket.cs

Envia o conjunto de buffers na lista para um Socket conectado, usando o SocketFlags especificado.

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

Parâmetros

buffers
IList<ArraySegment<Byte>>

Uma lista de ArraySegment<T>s do tipo Byte que contém os dados a serem enviados.

socketFlags
SocketFlags

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

errorCode
SocketError

Um objeto SocketError que armazena o erro de soquete.

Retornos

O número de bytes enviados para o Socket.

Exceções

buffers é null.

buffers está vazio.

Ocorreu um erro ao tentar acessar o soquete.

Comentários

Essa sobrecarga requer pelo menos um buffer que contém os dados que você deseja enviar. O SocketFlags valor 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, deverá chamar Connect antes de chamar esse método ou Send gerará um SocketException. Se você estiver usando um protocolo orientado a conexão, deverá usar Connect para estabelecer uma conexão de host remoto ou usar Accept para aceitar uma conexão de entrada.

Se você estiver usando um protocolo sem conexão e planeja enviar dados para vários hosts diferentes, use o SendTo método . Se você não usar o SendTo método , precisará chamar Connect antes de cada chamada para Send. Você pode usar SendTo mesmo depois de estabelecer um host remoto padrão com Connect. Você também pode alterar o host remoto padrão antes de chamar Send fazendo outra chamada para Connect.

Se você estiver usando um protocolo orientado a conexão, Send será bloqueado até que todos os bytes no buffer sejam enviados, a menos que um tempo limite tenha sido definido usando Socket.SendTimeout. Se o valor de tempo limite tiver sido excedido, a Send chamada gerará um SocketException. No modo sem bloqueio, Send pode ser concluído com êxito mesmo que ele envie menos do que o número de bytes no buffer. É responsabilidade do aplicativo controlar o número de bytes enviados e repetir a operação até que o aplicativo envie 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 Send método significa que o sistema subjacente teve espaço para armazenar seus dados em buffer para um envio de rede.

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

A conclusão bem-sucedida de um envio não indica que os dados foram entregues com êxito. Se nenhum espaço de buffer estiver disponível no sistema de transporte para manter os dados a serem transmitidos, o envio será bloqueado, a menos que o soquete tenha sido colocado no modo sem bloqueio.

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.

Aplica-se a

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

Origem:
Socket.cs
Origem:
Socket.cs
Origem:
Socket.cs

Envia o número especificado de bytes de dados para um Socket conectado, começando no deslocamento especificado e usando os SocketFlags especificados.

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

Retornos

O número de bytes enviados para o Socket.

Exceções

buffer é 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.

Exemplos

O exemplo de código a seguir especifica o buffer de dados, um deslocamento, um tamanho e SocketFlags o envio de dados para um conectado Socket.

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

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

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

End Function 'SendReceiveTest4

Comentários

Send envia dados de forma síncrona para o host remoto especificado no Connect método ou Accept e retorna o número de bytes enviados com êxito. Send pode ser usado para protocolos orientados a conexão e sem conexão.

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, deverá chamar Connect antes de chamar esse método ou Send gerará um SocketException. Se você estiver usando um protocolo orientado a conexão, deverá usar Connect para estabelecer uma conexão de host remoto ou usar Accept para aceitar uma conexão de entrada.

Se você estiver usando um protocolo sem conexão e planeja enviar dados para vários hosts diferentes, deverá usar SendTo. Se você não usar SendTo, precisará chamar Connect antes de cada chamada para Send. Não há problema em usar SendTo mesmo depois de estabelecer um host remoto padrão com Connect. Você também pode alterar o host remoto padrão antes de chamar Send fazendo outra chamada para Connect.

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 Send gerará um SocketException.

Se você estiver usando um protocolo orientado a conexão, Send será bloqueado até que o número solicitado de bytes seja enviado, a menos que um tempo limite tenha sido definido usando Socket.SendTimeout. Se o valor de tempo limite tiver sido excedido, a Send chamada gerará um SocketException. No modo sem bloqueio, Send pode ser concluído com êxito, mesmo que ele envie menos do que o número de bytes solicitados. É 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 de saída seja coletada. Uma conclusão bem-sucedida do Send método significa que o sistema subjacente teve espaço para armazenar seus dados em buffer para um envio de rede.

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

A conclusão bem-sucedida de um envio não indica que os dados foram entregues com êxito. Se nenhum espaço de buffer estiver disponível no sistema de transporte para manter os dados a serem transmitidos, o envio será bloqueado, a menos que o soquete tenha sido colocado no modo sem bloqueio.

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

Send(Byte[], Int32, SocketFlags)

Origem:
Socket.cs
Origem:
Socket.cs
Origem:
Socket.cs

Envia o número especificado de bytes de dados para um Socket conectado, usando o SocketFlags especificado.

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

Retornos

O número de bytes enviados para o Socket.

Exceções

buffer é null.

size é menor que 0 ou excede o tamanho do buffer.

socketFlags não é uma combinação válida de valores.

- ou -

Ocorre um erro de sistema operacional ao acessar o soquete.

Exemplos

O exemplo de código a seguir envia os dados encontrados no buffer e especifica None para SocketFlags.

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

        // Get reply from the server.
        int byteCount = server.Receive(bytes, 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, message size, and socket flags.
Public Shared Function SendReceiveTest3(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, msg.Length, SocketFlags.None)
        Console.WriteLine("Sent {0} bytes.", i)
        
        ' Get reply from the server.
        Dim byteCount As Integer = server.Receive(bytes, 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 'SendReceiveTest3

Comentários

Send envia dados de forma síncrona para o host remoto estabelecido no Connect método ou Accept e retorna o número de bytes enviados com êxito. Send pode ser usado para protocolos orientados a conexão e sem conexão.

Essa sobrecarga requer um buffer que contém os dados que você deseja enviar, o número de bytes que você deseja enviar e uma combinação bit a bit de qualquer SocketFlags. 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, deverá chamar Connect antes de chamar esse método ou Send gerará um SocketException. Se você estiver usando um protocolo orientado à conexão, deverá usar Connect para estabelecer uma conexão de host remoto ou usar Accept para aceitar uma conexão de entrada.

Se você estiver usando um protocolo sem conexão e planeja enviar dados para vários hosts diferentes, deverá usar o SendTo método . Se você não usar o SendTo método , precisará chamar o Connect método antes de cada chamada para o Send método . Você pode usar SendTo mesmo depois de estabelecer um host remoto padrão com Connect. Você também pode alterar o host remoto padrão antes de chamar Send fazendo outra chamada para Connect.

Com um protocolo orientado a conexão, Send será bloqueado até que o número solicitado de bytes seja enviado, a menos que um tempo limite tenha sido definido usando Socket.SendTimeout. Se o valor de tempo limite tiver sido excedido, a Send chamada gerará um SocketException. No modo de não desbloqueio, Send pode ser concluído com êxito, mesmo que ele envie menos do que o número de bytes solicitados. É 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 de saída seja coletada. Uma conclusão bem-sucedida do Send método significa que o sistema subjacente teve espaço para armazenar seus dados em buffer para um envio de rede.

Observação

Você deve garantir que o tamanho não exceda o tamanho máximo do pacote do provedor de serviços subjacente. Se isso acontecer, o datagrama não será enviado e Send gerará um SocketException. 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.

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.

Importante

A conclusão bem-sucedida de um envio não indica que os dados foram entregues com êxito. Se nenhum espaço de buffer estiver disponível no sistema de transporte para manter os dados a serem transmitidos, o envio será bloqueado, a menos que o soquete tenha sido colocado no modo sem bloqueio.

Confira também

Aplica-se a

Send(IList<ArraySegment<Byte>>)

Origem:
Socket.cs
Origem:
Socket.cs
Origem:
Socket.cs

Envia o conjunto de buffers na lista para um Socket conectado.

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

Parâmetros

buffers
IList<ArraySegment<Byte>>

Uma lista de ArraySegment<T>s do tipo Byte que contém os dados a serem enviados.

Retornos

O número de bytes enviados para o Socket.

Exceções

buffers é null.

buffers está vazio.

Ocorreu um erro ao tentar acessar o soquete. Consulte a seção Comentários abaixo.

Comentários

Send pode ser usado para protocolos orientados a conexão e sem conexão.

Essa sobrecarga requer pelo menos um buffer que contenha os dados que você deseja enviar.

Se você estiver usando um protocolo sem conexão, deverá chamar Connect antes de chamar esse método ou Send gerará um SocketException. Se você estiver usando um protocolo orientado à conexão, deverá usar Connect para estabelecer uma conexão de host remoto ou usar Accept para aceitar uma conexão de entrada.

Se você estiver usando um protocolo sem conexão e planeja enviar dados para vários hosts diferentes, deverá usar o SendTo método . Se você não usar o SendTo método , precisará chamar Connect antes de cada chamada para Send. Você pode usar SendTo mesmo depois de ter estabelecido um host remoto padrão com Connect. Você também pode alterar o host remoto padrão antes de chamar Send fazendo outra chamada para Connect.

Se você estiver usando um protocolo orientado à conexão, Send bloqueará até que todos os bytes no buffer sejam enviados, a menos que um tempo limite tenha sido definido usando Socket.SendTimeout. Se o valor de tempo limite tiver sido excedido, a Send chamada gerará um SocketException. No modo de não desbloqueio, Send pode ser concluído com êxito, mesmo que ele envie menos do que o número de bytes no buffer. É responsabilidade do aplicativo controlar o número de bytes enviados e repetir a operação até que o aplicativo envie 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 Send método significa que o sistema subjacente teve espaço para armazenar seus dados em buffer para um envio de rede.

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

A conclusão bem-sucedida de um envio não indica que os dados foram entregues com êxito. Se nenhum espaço de buffer estiver disponível no sistema de transporte para manter os dados a serem transmitidos, o envio será bloqueado, a menos que o soquete tenha sido colocado no modo sem bloqueio.

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.

Aplica-se a

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

Origem:
Socket.cs
Origem:
Socket.cs
Origem:
Socket.cs

Envia o conjunto de buffers na lista para um Socket conectado, usando o SocketFlags especificado.

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

Parâmetros

buffers
IList<ArraySegment<Byte>>

Uma lista de ArraySegment<T>s do tipo Byte 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 para o Socket.

Exceções

buffers é null.

buffers está vazio.

Ocorreu um erro ao tentar acessar o soquete.

Comentários

Essa sobrecarga requer pelo menos um buffer que contenha os dados que você deseja enviar. O SocketFlags valor usa 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, deverá chamar Connect antes de chamar esse método ou Send gerará um SocketException. Se você estiver usando um protocolo orientado à conexão, deverá usar Connect para estabelecer uma conexão de host remoto ou usar Accept para aceitar uma conexão de entrada.

Se você estiver usando um protocolo sem conexão e planeja enviar dados para vários hosts diferentes, deverá usar o SendTo método . Se você não usar o SendTo método , precisará chamar Connect antes de cada chamada para Send. Você pode usar SendTo mesmo depois de ter estabelecido um host remoto padrão com Connect. Você também pode alterar o host remoto padrão antes de chamar Send fazendo outra chamada para Connect.

Se você estiver usando um protocolo orientado a conexão, Send será bloqueado até que todos os bytes no buffer sejam enviados, a menos que um tempo limite tenha sido definido usando Socket.SendTimeout. Se o valor de tempo limite tiver sido excedido, a Send chamada gerará um SocketException. No modo sem bloqueio, Send pode ser concluído com êxito mesmo que ele envie menos do que o número de bytes no buffer. É responsabilidade do aplicativo controlar o número de bytes enviados e repetir a operação até que o aplicativo envie 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 Send método significa que o sistema subjacente teve espaço para armazenar seus dados em buffer para um envio de rede.

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

A conclusão bem-sucedida de um envio não indica que os dados foram entregues com êxito. Se nenhum espaço de buffer estiver disponível no sistema de transporte para manter os dados a serem transmitidos, o envio será bloqueado, a menos que o soquete tenha sido colocado no modo sem bloqueio.

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.

Aplica-se a

Send(Byte[], SocketFlags)

Origem:
Socket.cs
Origem:
Socket.cs
Origem:
Socket.cs

Envia dados para um Socket conectado usando o SocketFlags especificado.

public:
 int Send(cli::array <System::Byte> ^ buffer, System::Net::Sockets::SocketFlags socketFlags);
public int Send (byte[] buffer, System.Net.Sockets.SocketFlags socketFlags);
member this.Send : byte[] * System.Net.Sockets.SocketFlags -> int
Public Function Send (buffer As Byte(), socketFlags As SocketFlags) 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.

Retornos

O número de bytes enviados para o Socket.

Exceções

buffer é null.

Ocorreu um erro ao tentar acessar o soquete.

Exemplos

O exemplo de código a seguir demonstra o envio de dados em um conectado Socket.

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

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

End Function 'SendReceiveTest2

Comentários

Send envia dados de forma síncrona para o host remoto estabelecido no Connect método ou Accept e retorna o número de bytes enviados com êxito. O Send método pode ser usado para protocolos orientados a conexão e sem conexão.

Essa sobrecarga requer um buffer que contém os dados que você deseja enviar e uma combinação bit a bit de SocketFlags. O deslocamento do buffer assume 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 valor do socketflags parâmetro, os dados que você está enviando não serão roteado.

Se você estiver usando um protocolo sem conexão, deverá chamar Connect antes de chamar esse método ou Send gerará um SocketException. Se você estiver usando um protocolo orientado a conexão, deverá usar Connect para estabelecer uma conexão de host remoto ou usar Accept para aceitar uma conexão de entrada.

Se você estiver usando um protocolo sem conexão e planeja enviar dados para vários hosts diferentes, use o SendTo método . Se você não usar o SendTo método , precisará chamar o Connect método antes de cada chamada para Send. Você pode usar SendTo mesmo depois de estabelecer um host remoto padrão com Connect. Você também pode alterar o host remoto padrão antes de chamar Send fazendo outra chamada para Connect.

Se você estiver usando um protocolo orientado a conexão, Send será bloqueado até que todos os bytes no buffer sejam enviados, a menos que um tempo limite tenha sido definido usando Socket.SendTimeout. Se o valor de tempo limite tiver sido excedido, a Send chamada gerará um SocketException. No modo sem bloqueio, Send pode ser concluído com êxito, mesmo que ele envie menos do que o número de bytes no buffer. É 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 de saída seja coletada. Uma conclusão bem-sucedida do Send método significa que o sistema subjacente teve espaço para armazenar seus dados em buffer para um envio de rede.

Observação

Você deve garantir que o tamanho do buffer não exceda o tamanho máximo do pacote do provedor de serviços subjacente. Se isso acontecer, o datagrama não será enviado e Send gerará um SocketException. 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

A conclusão bem-sucedida de um envio não indica que os dados foram entregues com êxito. Se nenhum espaço de buffer estiver disponível no sistema de transporte para manter os dados a serem transmitidos, o envio será bloqueado, a menos que o soquete tenha sido colocado no modo sem bloqueio.

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

Send(ReadOnlySpan<Byte>, SocketFlags)

Origem:
Socket.cs
Origem:
Socket.cs
Origem:
Socket.cs

Envia dados para um Socket conectado usando o SocketFlags especificado.

public:
 int Send(ReadOnlySpan<System::Byte> buffer, System::Net::Sockets::SocketFlags socketFlags);
public int Send (ReadOnlySpan<byte> buffer, System.Net.Sockets.SocketFlags socketFlags);
member this.Send : ReadOnlySpan<byte> * System.Net.Sockets.SocketFlags -> int
Public Function Send (buffer As ReadOnlySpan(Of Byte), socketFlags As SocketFlags) 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 de enumeração que especifica os comportamentos de envio e recebimento.

Retornos

O número de bytes enviados para o Socket.

Exceções

Ocorreu um erro ao tentar acessar o soquete.

Confira também

Aplica-se a

Send(Byte[])

Origem:
Socket.cs
Origem:
Socket.cs
Origem:
Socket.cs

Envia dados para um Socket conectado.

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

Parâmetros

buffer
Byte[]

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

Retornos

O número de bytes enviados para o Socket.

Exceções

buffer é null.

Ocorreu um erro ao tentar acessar o soquete.

Exemplos

O exemplo de código a seguir demonstra o envio de dados em um conectado Socket.

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

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

End Function 'SendReceiveTest1

Comentários

Send envia dados de forma síncrona para o host remoto especificado no Connect método ou Accept e retorna o número de bytes enviados com êxito. Send pode ser usado para protocolos orientados a conexão e sem conexão.

Essa sobrecarga requer um buffer que contém os dados que você deseja enviar. O SocketFlags valor assume como padrão 0, o deslocamento do buffer assume como padrão 0 e o número de bytes para enviar padrões para o tamanho do buffer.

Se você estiver usando um protocolo sem conexão, deverá chamar Connect antes de chamar esse método ou Send gerará um SocketException. Se você estiver usando um protocolo orientado a conexão, deverá usar Connect para estabelecer uma conexão de host remoto ou usar Accept para aceitar uma conexão de entrada.

Se você estiver usando um protocolo sem conexão e planeja enviar dados para vários hosts diferentes, use o SendTo método . Se você não usar o SendTo método , precisará chamar Connect antes de cada chamada para Send. Você pode usar SendTo mesmo depois de estabelecer um host remoto padrão com Connect. Você também pode alterar o host remoto padrão antes de chamar Send fazendo outra chamada para Connect.

Se você estiver usando um protocolo orientado a conexão, Send será bloqueado até que todos os bytes no buffer sejam enviados, a menos que um tempo limite tenha sido definido usando Socket.SendTimeout. Se o valor de tempo limite tiver sido excedido, a Send chamada gerará um SocketException. No modo sem bloqueio, Send pode ser concluído com êxito, mesmo que ele envie menos do que o número de bytes no buffer. É responsabilidade do aplicativo controlar o número de bytes enviados e repetir a operação até que o aplicativo envie 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 Send método significa que o sistema subjacente teve espaço para armazenar seus dados em buffer para um envio de rede.

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

A conclusão bem-sucedida de um envio não indica que os dados foram entregues com êxito. Se nenhum espaço de buffer estiver disponível no sistema de transporte para manter os dados a serem transmitidos, o envio será bloqueado, a menos que o soquete tenha sido colocado no modo sem bloqueio.

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