Socket.Send Método

Definição

Envia dados para um Socket conectado.Sends data to a connected Socket.

Sobrecargas

Send(Byte[])

Envia dados para um Socket conectado.Sends data to a connected Socket.

Send(IList<ArraySegment<Byte>>)

Envia o conjunto de buffers na lista para um Socket conectado.Sends the set of buffers in the list to a connected Socket.

Send(ReadOnlySpan<Byte>)

Envia dados para um Socket conectado.Sends data to a connected Socket.

Send(Byte[], SocketFlags)

Envia dados para um Socket conectado usando o SocketFlags especificado.Sends data to a connected Socket using the specified SocketFlags.

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

Envia o conjunto de buffers na lista para um Socket conectado, usando o SocketFlags especificado.Sends the set of buffers in the list to a connected Socket, using the specified SocketFlags.

Send(ReadOnlySpan<Byte>, SocketFlags)

Envia dados para um Socket conectado usando o SocketFlags especificado.Sends data to a connected Socket using the specified SocketFlags.

Send(Byte[], Int32, SocketFlags)

Envia o número especificado de bytes de dados para um Socket conectado, usando o SocketFlags especificado.Sends the specified number of bytes of data to a connected Socket, using the specified SocketFlags.

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

Envia o conjunto de buffers na lista para um Socket conectado, usando o SocketFlags especificado.Sends the set of buffers in the list to a connected Socket, using the specified SocketFlags.

Send(ReadOnlySpan<Byte>, SocketFlags, SocketError)

Envia dados para um Socket conectado usando o SocketFlags especificado.Sends data to a connected Socket using the specified SocketFlags.

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.Sends the specified number of bytes of data to a connected Socket, starting at the specified offset, and using the specified SocketFlags.

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

Envia o número especificado de bytes de dados a um Socket conectado, iniciando no deslocamento especificado e usando o SocketFlags especificadoSends the specified number of bytes of data to a connected Socket, starting at the specified offset, and using the specified SocketFlags

Send(Byte[])

Envia dados para um Socket conectado.Sends data to a connected Socket.

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.An array of type Byte that contains the data to be sent.

Retornos

Int32

O número de bytes enviados para o Socket.The number of bytes sent to the Socket.

Exceções

buffer é null.buffer is null.

Ocorreu um erro ao tentar acessar o soquete.An error occurred when attempting to access the socket.

O Socket foi fechado.The Socket has been closed.

Exemplos

O exemplo de código a seguir demonstra o envio de dados em um conectado Socket .The following code example demonstrates sending data on a connected 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 o envia dados de forma síncrona para o host remoto especificado no Connect Accept método ou e retorna o número de bytes enviados com êxito.Send synchronously sends data to the remote host specified in the Connect or Accept method and returns the number of bytes successfully sent. Send pode ser usado para protocolos orientados por conexão e sem conexão.Send can be used for both connection-oriented and connectionless protocols.

Essa sobrecarga requer um buffer que contém os dados que você deseja enviar.This overload requires a buffer that contains the data you want to send. O SocketFlags valor padrão é 0, o deslocamento do buffer assume como padrão 0 e o número de bytes a ser enviado por padrão é o tamanho do buffer.The SocketFlags value defaults to 0, the buffer offset defaults to 0, and the number of bytes to send defaults to the size of the buffer.

Se você estiver usando um protocolo sem conexão, deverá chamar Connect antes de chamar esse método ou Send gerará um SocketException .If you are using a connectionless protocol, you must call Connect before calling this method, or Send will throw a SocketException. Se você estiver usando um protocolo orientado a conexão, deverá usar o Connect para estabelecer uma conexão de host remoto ou usar o Accept para aceitar uma conexão de entrada.If you are using a connection-oriented protocol, you must either use Connect to establish a remote host connection, or use Accept to accept an incoming connection.

Se você estiver usando um protocolo sem conexão e planeja enviar dados para vários hosts diferentes, use o SendTo método.If you are using a connectionless protocol and plan to send data to several different hosts, you should use the SendTo method. Se você não usar o SendTo método, precisará chamar Connect antes de cada chamada para Send .If you do not use the SendTo method, you will have to call Connect before each call to Send. Você pode usar SendTo mesmo depois de ter estabelecido um host remoto padrão com o Connect .You can use SendTo even after you have established a default remote host with Connect. Você também pode alterar o host remoto padrão antes de chamar Send fazendo outra chamada para Connect .You can also change the default remote host prior to calling Send by making another call to Connect.

Se você estiver usando um protocolo orientado a conexão, 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 .If you are using a connection-oriented protocol, Send will block until all of the bytes in the buffer are sent, unless a time-out was set by using Socket.SendTimeout. Se o valor de tempo limite for excedido, a Send chamada gerará um SocketException .If the time-out value was exceeded, the Send call will throw a SocketException. No modo de não bloqueio, Send pode ser concluído com êxito mesmo que ele envie menos do que o número de bytes no buffer.In nonblocking mode, Send may complete successfully even if it sends less than the number of bytes in the buffer. É responsabilidade do seu aplicativo manter o controle do número de bytes enviados e repetir a operação até que o aplicativo envie os bytes no buffer.It is your application's responsibility to keep track of the number of bytes sent and to retry the operation until the application sends the bytes in the buffer. Também não há nenhuma garantia de que os dados que você enviar aparecerão na rede imediatamente.There is also no guarantee that the data you send will appear on the network immediately. 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.To increase network efficiency, the underlying system may delay transmission until a significant amount of outgoing data is collected. Uma conclusão bem-sucedida do Send método significa que o sistema subjacente tinha espaço para armazenar em buffer os dados de um envio de rede.A successful completion of the Send method means that the underlying system has had room to buffer your data for a network send.

Observação

Se você receber um SocketException , use a SocketException.ErrorCode propriedade para obter o código de erro específico.If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. 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.After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

Observação

A conclusão bem-sucedida de um envio não indica que os dados foram entregues com êxito.The successful completion of a send does not indicate that the data was successfully delivered. 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 de não bloqueio.If no buffer space is available within the transport system to hold the data to be transmitted, send will block unless the socket has been placed in nonblocking mode.

Observação

Esse membro emite o rastreamento de informações quando você ativa o rastreamento de rede em seu aplicativo.This member outputs trace information when you enable network tracing in your application. Para obter mais informações, consulte rastreamento de rede na .NET Framework.For more information, see Network Tracing in the .NET Framework.

Confira também

Aplica-se a

Send(IList<ArraySegment<Byte>>)

Envia o conjunto de buffers na lista para um Socket conectado.Sends the set of buffers in the list to a connected Socket.

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.A list of ArraySegment<T>s of type Byte that contains the data to be sent.

Retornos

Int32

O número de bytes enviados para o Socket.The number of bytes sent to the Socket.

Exceções

buffers é null.buffers is null.

buffers está vazio.buffers is empty.

Ocorreu um erro ao tentar acessar o soquete.An error occurred when attempting to access the socket. Consulte a seção Comentários abaixo.See remarks section below.

O Socket foi fechado.The Socket has been closed.

Comentários

Send pode ser usado para protocolos orientados por conexão e sem conexão.Send can be used for both connection-oriented and connectionless protocols.

Essa sobrecarga requer pelo menos um buffer que contenha os dados que você deseja enviar.This overload requires at least one buffer that contains the data you want to send.

Se você estiver usando um protocolo sem conexão, deverá chamar Connect antes de chamar esse método ou Send gerará um SocketException .If you are using a connectionless protocol, you must call Connect before calling this method, or Send will throw a SocketException. Se você estiver usando um protocolo orientado a conexão, deverá usar o Connect para estabelecer uma conexão de host remoto ou usar o Accept para aceitar uma conexão de entrada.If you are using a connection-oriented protocol, you must either use Connect to establish a remote host connection, or use Accept to accept an incoming connection.

Se você estiver usando um protocolo sem conexão e planeja enviar dados para vários hosts diferentes, use o SendTo método.If you are using a connectionless protocol and plan to send data to several different hosts, you should use the SendTo method. Se você não usar o SendTo método, precisará chamar Connect antes de cada chamada para Send .If you do not use the SendTo method, you will have to call Connect before each call to Send. Você pode usar SendTo mesmo depois de ter estabelecido um host remoto padrão com o Connect .You can use SendTo even after you have established a default remote host with Connect. Você também pode alterar o host remoto padrão antes de chamar Send fazendo outra chamada para Connect .You can also change the default remote host prior to calling Send by making another call to Connect.

Se você estiver usando um protocolo orientado a conexão, 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 .If you are using a connection-oriented protocol, Send will block until all of the bytes in the buffer are sent, unless a time-out was set by using Socket.SendTimeout. Se o valor de tempo limite for excedido, a Send chamada gerará um SocketException .If the time-out value was exceeded, the Send call will throw a SocketException. No modo de não bloqueio, Send pode ser concluído com êxito mesmo que ele envie menos do que o número de bytes no buffer.In nonblocking mode, Send may complete successfully even if it sends less than the number of bytes in the buffer. É responsabilidade do seu aplicativo manter o controle do número de bytes enviados e repetir a operação até que o aplicativo envie os bytes no buffer.It is your application's responsibility to keep track of the number of bytes sent and to retry the operation until the application sends the bytes in the buffer. Também não há nenhuma garantia de que os dados que você enviar aparecerão na rede imediatamente.There is also no guarantee that the data you send will appear on the network immediately. 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.To increase network efficiency, the underlying system may delay transmission until a significant amount of outgoing data is collected. Uma conclusão bem-sucedida do Send método significa que o sistema subjacente tinha espaço para armazenar em buffer os dados de um envio de rede.A successful completion of the Send method means that the underlying system has had room to buffer your data for a network send.

Observação

Se você receber um SocketException , use a SocketException.ErrorCode propriedade para obter o código de erro específico.If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. 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.After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

Observação

A conclusão bem-sucedida de um envio não indica que os dados foram entregues com êxito.The successful completion of a send does not indicate that the data was successfully delivered. 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 de não bloqueio.If no buffer space is available within the transport system to hold the data to be transmitted, send will block unless the socket has been placed in nonblocking mode.

Observação

Esse membro emite o rastreamento de informações quando você ativa o rastreamento de rede em seu aplicativo.This member outputs trace information when you enable network tracing in your application. Para obter mais informações, consulte rastreamento de rede na .NET Framework.For more information, see Network Tracing in the .NET Framework.

Aplica-se a

Send(ReadOnlySpan<Byte>)

Envia dados para um Socket conectado.Sends data to a connected Socket.

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.A span of bytes that contains the data to be sent.

Retornos

Int32

O número de bytes enviados para o Socket.The number of bytes sent to the Socket.

Exceções

Ocorreu um erro ao tentar acessar o soquete.An error occurred when attempting to access the socket.

O Socket foi fechado.The Socket has been closed.

Comentários

Send o envia dados de forma síncrona para o host remoto especificado no Connect Accept método ou e retorna o número de bytes enviados com êxito.Send synchronously sends data to the remote host specified in the Connect or Accept method and returns the number of bytes successfully sent. Send pode ser usado para protocolos orientados por conexão e sem conexão.Send can be used for both connection-oriented and connectionless protocols.

Essa sobrecarga requer um buffer que contém os dados que você deseja enviar.This overload requires a buffer that contains the data you want to send. O SocketFlags valor padrão é 0, o deslocamento do buffer assume como padrão 0 e o número de bytes a ser enviado por padrão é o tamanho do buffer.The SocketFlags value defaults to 0, the buffer offset defaults to 0, and the number of bytes to send defaults to the size of the buffer.

Se você estiver usando um protocolo sem conexão, deverá chamar Connect antes de chamar esse método ou Send gerará um SocketException .If you're using a connectionless protocol, you must call Connect before calling this method, or Send will throw a SocketException. Se você estiver usando um protocolo orientado a conexão, deverá usar o Connect para estabelecer uma conexão de host remoto ou usar o Accept para aceitar uma conexão de entrada.If you're using a connection-oriented protocol, you must either use Connect to establish a remote host connection, or use Accept to accept an incoming connection.

Se você estiver usando um protocolo sem conexão e planeja enviar dados para vários hosts diferentes, use o SendTo método.If you're using a connectionless protocol and plan to send data to several different hosts, you should use the SendTo method. Se você não usar o SendTo método, precisará chamar antes de Connect cada chamada para Send .If you don't use the SendTo method, you'll have to call Connect before each call to Send. Você pode usar SendTo mesmo depois de ter estabelecido um host remoto padrão com o Connect .You can use SendTo even after you have established a default remote host with Connect. Você também pode alterar o host remoto padrão antes Send de chamar fazendo outra chamada para Connect .You can also change the default remote host before calling Send by making another call to Connect.

Se você estiver usando um protocolo orientado a conexão, 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 .If you're using a connection-oriented protocol, Send will block until all of the bytes in the buffer are sent, unless a time-out was set by using Socket.SendTimeout. Se o valor de tempo limite for excedido, a Send chamada gerará um SocketException .If the time-out value was exceeded, the Send call will throw a SocketException. No modo de não bloqueio, Send pode ser concluído com êxito mesmo que ele envie menos do que o número de bytes no buffer.In nonblocking mode, Send may complete successfully even if it sends less than the number of bytes in the buffer. É responsabilidade do seu aplicativo manter o controle do número de bytes enviados e repetir a operação até que o aplicativo envie os bytes no buffer.It is your application's responsibility to keep track of the number of bytes sent and to retry the operation until the application sends the bytes in the buffer. Também não há nenhuma garantia de que os dados que você enviar aparecerão na rede imediatamente.There's also no guarantee that the data you send will appear on the network immediately. 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.To increase network efficiency, the underlying system may delay transmission until a significant amount of outgoing data is collected. Uma conclusão bem-sucedida do Send método significa que o sistema subjacente tinha espaço para armazenar em buffer os dados de um envio de rede.A successful completion of the Send method means that the underlying system has had room to buffer your data for a network send.

Observação

Se você receber um SocketException , use a SocketException.ErrorCode propriedade para obter o código de erro específico.If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. 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.After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

Esse membro emite o rastreamento de informações quando você ativa o rastreamento de rede em seu aplicativo.This member outputs trace information when you enable network tracing in your application. Para obter mais informações, consulte rastreamento de rede na .NET Framework.For more information, see Network Tracing in the .NET Framework.

Importante

A conclusão bem-sucedida de um envio não indica que os dados foram entregues com êxito.The successful completion of a send does not indicate that the data was successfully delivered. 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 de não bloqueio.If no buffer space is available within the transport system to hold the data to be transmitted, send will block unless the socket has been placed in nonblocking mode.

Confira também

Aplica-se a

Send(Byte[], SocketFlags)

Envia dados para um Socket conectado usando o SocketFlags especificado.Sends data to a connected Socket using the specified SocketFlags.

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.An array of type Byte that contains the data to be sent.

socketFlags
SocketFlags

Uma combinação bit a bit dos valores SocketFlags.A bitwise combination of the SocketFlags values.

Retornos

Int32

O número de bytes enviados para o Socket.The number of bytes sent to the Socket.

Exceções

buffer é null.buffer is null.

Ocorreu um erro ao tentar acessar o soquete.An error occurred when attempting to access the socket.

O Socket foi fechado.The Socket has been closed.

Exemplos

O exemplo de código a seguir demonstra o envio de dados em um conectado Socket .The following code example demonstrates sending data on a connected 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 o envia dados de forma síncrona para o host remoto estabelecido no Connect Accept método ou e retorna o número de bytes enviados com êxito.Send synchronously sends data to the remote host established in the Connect or Accept method and returns the number of bytes successfully sent. O Send método pode ser usado para protocolos orientados a conexão e sem conexão.The Send method can be used for both connection-oriented and connectionless protocols.

Essa sobrecarga requer um buffer que contenha os dados que você deseja enviar e uma combinação de bits SocketFlags .This overload requires a buffer that contains the data you want to send and a bitwise combination of SocketFlags. O deslocamento do buffer é padronizado como 0 e o número de bytes a serem enviados por padrão é o tamanho do buffer.The buffer offset defaults to 0, and the number of bytes to send defaults to the size of the buffer. Se você especificar o DontRoute sinalizador como o socketflags valor do parâmetro, os dados que você está enviando não serão roteados.If you specify the DontRoute flag as the socketflags parameter value, the data you are sending will not be routed.

Se você estiver usando um protocolo sem conexão, deverá chamar Connect antes de chamar esse método ou Send gerará um SocketException .If you are using a connectionless protocol, you must call Connect before calling this method, or Send will throw a SocketException. Se você estiver usando um protocolo orientado a conexão, deverá usar o Connect para estabelecer uma conexão de host remoto ou usar o Accept para aceitar uma conexão de entrada.If you are using a connection-oriented protocol, you must either use Connect to establish a remote host connection, or use Accept to accept an incoming connection.

Se você estiver usando um protocolo sem conexão e planeja enviar dados para vários hosts diferentes, use o SendTo método.If you are using a connectionless protocol and plan to send data to several different hosts, you should use the SendTo method. Se você não usar o SendTo método, precisará chamar o Connect método antes de cada chamada para Send .If you do not use the SendTo method, you will have to call the Connect method before each call to Send. Você pode usar SendTo mesmo depois de ter estabelecido um host remoto padrão com o Connect .You can use SendTo even after you have established a default remote host with Connect. Você também pode alterar o host remoto padrão antes de chamar Send fazendo outra chamada para Connect .You can also change the default remote host prior to calling Send by making another call to Connect.

Se você estiver usando um protocolo orientado a conexão, 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 .If you are using a connection-oriented protocol, Send will block until all of the bytes in the buffer are sent, unless a time-out was set by using Socket.SendTimeout. Se o valor de tempo limite for excedido, a Send chamada gerará um SocketException .If the time-out value was exceeded, the Send call will throw a SocketException. No modo de não bloqueio, Send pode ser concluído com êxito mesmo que ele envie menos do que o número de bytes no buffer.In nonblocking mode, Send may complete successfully even if it sends less than the number of bytes in the buffer. É responsabilidade do seu aplicativo manter o controle do número de bytes enviados e repetir a operação até que o aplicativo envie o número solicitado de bytes.It is your application's responsibility to keep track of the number of bytes sent and to retry the operation until the application sends the requested number of bytes. Também não há nenhuma garantia de que os dados que você enviar aparecerão na rede imediatamente.There is also no guarantee that the data you send will appear on the network immediately. 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.To increase network efficiency, the underlying system may delay transmission until a significant amount of outgoing data is collected. Uma conclusão bem-sucedida do Send método significa que o sistema subjacente tinha espaço para armazenar em buffer os dados de um envio de rede.A successful completion of the Send method means that the underlying system has had room to buffer your data for a network send.

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.You must ensure that the size of your buffer does not exceed the maximum packet size of the underlying service provider. Se tiver, o datagrama não será enviado e Send gerará um SocketException .If it does, the datagram will not be sent and Send will throw a SocketException. Se você receber um SocketException , use a SocketException.ErrorCode propriedade para obter o código de erro específico.If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. 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.After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

Observação

A conclusão bem-sucedida de um envio não indica que os dados foram entregues com êxito.The successful completion of a send does not indicate that the data was successfully delivered. 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 de não bloqueio.If no buffer space is available within the transport system to hold the data to be transmitted, send will block unless the socket has been placed in nonblocking mode.

Observação

Esse membro emite o rastreamento de informações quando você ativa o rastreamento de rede em seu aplicativo.This member outputs trace information when you enable network tracing in your application. Para obter mais informações, consulte rastreamento de rede na .NET Framework.For more information, see Network Tracing in the .NET Framework.

Confira também

Aplica-se a

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

Envia o conjunto de buffers na lista para um Socket conectado, usando o SocketFlags especificado.Sends the set of buffers in the list to a connected Socket, using the specified SocketFlags.

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.A list of ArraySegment<T>s of type Byte that contains the data to be sent.

socketFlags
SocketFlags

Uma combinação bit a bit dos valores SocketFlags.A bitwise combination of the SocketFlags values.

Retornos

Int32

O número de bytes enviados para o Socket.The number of bytes sent to the Socket.

Exceções

buffers é null.buffers is null.

buffers está vazio.buffers is empty.

Ocorreu um erro ao tentar acessar o soquete.An error occurred when attempting to access the socket.

O Socket foi fechado.The Socket has been closed.

Comentários

Essa sobrecarga requer pelo menos um buffer que contenha os dados que você deseja enviar.This overload requires at least one buffer that contains the data you want to send. O SocketFlags valor padrão é 0.The SocketFlags value defaults to 0. Se você especificar o DontRoute sinalizador como o socketFlags parâmetro, os dados que você está enviando não serão roteados.If you specify the DontRoute flag as the socketFlags parameter, the data you are sending will not be routed.

Se você estiver usando um protocolo sem conexão, deverá chamar Connect antes de chamar esse método ou Send gerará um SocketException .If you are using a connectionless protocol, you must call Connect before calling this method, or Send will throw a SocketException. Se você estiver usando um protocolo orientado a conexão, deverá usar o Connect para estabelecer uma conexão de host remoto ou usar o Accept para aceitar uma conexão de entrada.If you are using a connection-oriented protocol, you must either use Connect to establish a remote host connection, or use Accept to accept an incoming connection.

Se você estiver usando um protocolo sem conexão e planeja enviar dados para vários hosts diferentes, use o SendTo método.If you are using a connectionless protocol and plan to send data to several different hosts, you should use the SendTo method. Se você não usar o SendTo método, precisará chamar Connect antes de cada chamada para Send .If you do not use the SendTo method, you will have to call Connect before each call to Send. Você pode usar SendTo mesmo depois de ter estabelecido um host remoto padrão com o Connect .You can use SendTo even after you have established a default remote host with Connect. Você também pode alterar o host remoto padrão antes de chamar Send fazendo outra chamada para Connect .You can also change the default remote host prior to calling Send by making another call to Connect.

Se você estiver usando um protocolo orientado a conexão, 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 .If you are using a connection-oriented protocol, Send will block until all of the bytes in the buffer are sent, unless a time-out was set by using Socket.SendTimeout. Se o valor de tempo limite for excedido, a Send chamada gerará um SocketException .If the time-out value was exceeded, the Send call will throw a SocketException. No modo sem bloqueio, o Send pode ser concluído com êxito mesmo que ele envie menos do que o número de bytes no buffer.In non-blocking mode, Send may complete successfully even if it sends less than the number of bytes in the buffer. É responsabilidade do seu aplicativo manter o controle do número de bytes enviados e repetir a operação até que o aplicativo envie os bytes no buffer.It is your application's responsibility to keep track of the number of bytes sent and to retry the operation until the application sends the bytes in the buffer. Também não há nenhuma garantia de que os dados que você enviar aparecerão na rede imediatamente.There is also no guarantee that the data you send will appear on the network immediately. 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.To increase network efficiency, the underlying system may delay transmission until a significant amount of outgoing data is collected. Uma conclusão bem-sucedida do Send método significa que o sistema subjacente tinha espaço para armazenar em buffer os dados de um envio de rede.A successful completion of the Send method means that the underlying system has had room to buffer your data for a network send.

Observação

Se você receber um SocketException , use a SocketException.ErrorCode propriedade para obter o código de erro específico.If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. 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.After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

Observação

A conclusão bem-sucedida de um envio não indica que os dados foram entregues com êxito.The successful completion of a send does not indicate that the data was successfully delivered. 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 de não bloqueio.If no buffer space is available within the transport system to hold the data to be transmitted, send will block unless the socket has been placed in nonblocking mode.

Observação

Esse membro emite o rastreamento de informações quando você ativa o rastreamento de rede em seu aplicativo.This member outputs trace information when you enable network tracing in your application. Para obter mais informações, consulte rastreamento de rede na .NET Framework.For more information, see Network Tracing in the .NET Framework.

Aplica-se a

Send(ReadOnlySpan<Byte>, SocketFlags)

Envia dados para um Socket conectado usando o SocketFlags especificado.Sends data to a connected Socket using the specified SocketFlags.

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.A span of bytes that contains the data to be sent.

socketFlags
SocketFlags

Uma combinação bit a bit dos valores de enumeração que especifica os comportamentos de envio e recebimento.A bitwise combination of the enumeration values that specifies send and receive behaviors.

Retornos

Int32

O número de bytes enviados para o Socket.The number of bytes sent to the Socket.

Exceções

Ocorreu um erro ao tentar acessar o soquete.An error occurred when attempting to access the socket.

O Socket foi fechado.The Socket has been closed.

Confira também

Aplica-se a

Send(Byte[], Int32, SocketFlags)

Envia o número especificado de bytes de dados para um Socket conectado, usando o SocketFlags especificado.Sends the specified number of bytes of data to a connected Socket, using the specified SocketFlags.

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.An array of type Byte that contains the data to be sent.

size
Int32

O número de bytes a serem enviados.The number of bytes to send.

socketFlags
SocketFlags

Uma combinação bit a bit dos valores SocketFlags.A bitwise combination of the SocketFlags values.

Retornos

Int32

O número de bytes enviados para o Socket.The number of bytes sent to the Socket.

Exceções

buffer é null.buffer is null.

size é menor que 0 ou excede o tamanho do buffer.size is less than 0 or exceeds the size of the buffer.

socketFlags não é uma combinação válida de valores.socketFlags is not a valid combination of values.

- ou --or- Ocorre um erro de sistema operacional ao acessar o soquete.An operating system error occurs while accessing the socket.

O Socket foi fechado.The Socket has been closed.

Exemplos

O exemplo de código a seguir envia os dados encontrados no buffer e especifica None para SocketFlags .The following code example sends the data found in buffer, and specifies None for 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, 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);
        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 o envia dados de forma síncrona para o host remoto estabelecido no Connect Accept método ou e retorna o número de bytes enviados com êxito.Send synchronously sends data to the remote host established in the Connect or Accept method and returns the number of bytes successfully sent. Send pode ser usado para protocolos orientados por conexão e sem conexão.Send can be used for both connection-oriented and connectionless protocols.

Essa sobrecarga requer um buffer que contenha os dados que você deseja enviar, o número de bytes que você deseja enviar e uma combinação de bits de qualquer SocketFlags .This overload requires a buffer that contains the data you want to send, the number of bytes you want to send, and a bitwise combination of any SocketFlags. Se você especificar o DontRoute sinalizador como o socketflags parâmetro, os dados que você está enviando não serão roteados.If you specify the DontRoute flag as the socketflags parameter, the data you're sending won't be routed.

Se você estiver usando um protocolo sem conexão, deverá chamar Connect antes de chamar esse método ou Send gerará um SocketException .If you're using a connectionless protocol, you must call Connect before calling this method, or Send will throw a SocketException. Se você estiver usando um protocolo orientado a conexão, deverá usar o Connect para estabelecer uma conexão de host remoto ou usar o Accept para aceitar uma conexão de entrada.If you're using a connection-oriented protocol, you must either use Connect to establish a remote host connection, or use Accept to accept an incoming connection.

Se você estiver usando um protocolo sem conexão e planeja enviar dados para vários hosts diferentes, use o SendTo método.If you're using a connectionless protocol and plan to send data to several different hosts, you should use the SendTo method. Se você don'tuse o SendTo método, precisará chamar o Connect método antes de cada chamada para o Send método.If you don'tuse the SendTo method, you'll have to call the Connect method before each call to the Send method. Você pode usar SendTo mesmo depois de ter estabelecido um host remoto padrão com o Connect .You can use SendTo even after you've established a default remote host with Connect. Você também pode alterar o host remoto padrão antes Send de chamar fazendo outra chamada para Connect .You can also change the default remote host before calling Send by making another call to Connect.

Com um protocolo orientado à conexão, Send o será bloqueado até que o número solicitado de bytes seja enviado, a menos que um tempo limite tenha sido definido usando Socket.SendTimeout .With a connection-oriented protocol, Send will block until the requested number of bytes are sent, unless a time-out was set by using Socket.SendTimeout. Se o valor de tempo limite for excedido, a Send chamada gerará um SocketException .If the time-out value was exceeded, the Send call will throw a SocketException. No modo não bloqueado, o Send pode ser concluído com êxito mesmo que ele envie menos que o número de bytes solicitados.In nonblocking mode, Send may complete successfully even if it sends less than the number of bytes you request. É responsabilidade do seu aplicativo manter o controle do número de bytes enviados e repetir a operação até que o aplicativo envie o número solicitado de bytes.It is your application's responsibility to keep track of the number of bytes sent and to retry the operation until the application sends the requested number of bytes. Também não há nenhuma garantia de que os dados que você enviar aparecerão na rede imediatamente.There is also no guarantee that the data you send will appear on the network immediately. 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.To increase network efficiency, the underlying system may delay transmission until a significant amount of outgoing data is collected. Uma conclusão bem-sucedida do Send método significa que o sistema subjacente tinha espaço para armazenar em buffer os dados de um envio de rede.A successful completion of the Send method means that the underlying system has had room to buffer your data for a network send.

Observação

Você deve garantir que o tamanho não exceda o tamanho máximo do pacote do provedor de serviços subjacente.You must ensure that the size does not exceed the maximum packet size of the underlying service provider. Se tiver, o datagrama não será enviado e Send gerará um SocketException .If it does, the datagram won't be sent and Send will throw a SocketException. Se você receber um SocketException , use a SocketException.ErrorCode propriedade para obter o código de erro específico.If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. 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.After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

Esse membro emite o rastreamento de informações quando você ativa o rastreamento de rede em seu aplicativo.This member outputs trace information when you enable network tracing in your application. Para obter mais informações, consulte rastreamento de rede na .NET Framework.For more information, see Network Tracing in the .NET Framework.

Importante

A conclusão bem-sucedida de um envio não indica que os dados foram entregues com êxito.The successful completion of a send does not indicate that the data was successfully delivered. 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 de não bloqueio.If no buffer space is available within the transport system to hold the data to be transmitted, send will block unless the socket has been placed in nonblocking mode.

Confira também

Aplica-se a

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

Importante

Esta API não está em conformidade com CLS.

Alternativa em conformidade com CLS
System.Net.Sockets.Socket.Send(Byte[], Int32, SocketFlags)

Envia o conjunto de buffers na lista para um Socket conectado, usando o SocketFlags especificado.Sends the set of buffers in the list to a connected Socket, using the specified SocketFlags.

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);
[System.CLSCompliant(false)]
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
[<System.CLSCompliant(false)>]
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.A list of ArraySegment<T>s of type Byte that contains the data to be sent.

socketFlags
SocketFlags

Uma combinação bit a bit dos valores SocketFlags.A bitwise combination of the SocketFlags values.

errorCode
SocketError

Um objeto SocketError que armazena o erro de soquete.A SocketError object that stores the socket error.

Retornos

Int32

O número de bytes enviados para o Socket.The number of bytes sent to the Socket.

Atributos

Exceções

buffers é null.buffers is null.

buffers está vazio.buffers is empty.

Ocorreu um erro ao tentar acessar o soquete.An error occurred when attempting to access the socket.

O Socket foi fechado.The Socket has been closed.

Comentários

Essa sobrecarga requer pelo menos um buffer que contenha os dados que você deseja enviar.This overload requires at least one buffer that contains the data you want to send. O SocketFlags valor padrão é 0.The SocketFlags value defaults to 0. Se você especificar o DontRoute sinalizador como o socketFlags parâmetro, os dados que você está enviando não serão roteados.If you specify the DontRoute flag as the socketFlags parameter, the data you are sending will not be routed.

Se você estiver usando um protocolo sem conexão, deverá chamar Connect antes de chamar esse método ou Send gerará um SocketException .If you are using a connectionless protocol, you must call Connect before calling this method, or Send will throw a SocketException. Se você estiver usando um protocolo orientado a conexão, deverá usar o Connect para estabelecer uma conexão de host remoto ou usar o Accept para aceitar uma conexão de entrada.If you are using a connection-oriented protocol, you must either use Connect to establish a remote host connection, or use Accept to accept an incoming connection.

Se você estiver usando um protocolo sem conexão e planeja enviar dados para vários hosts diferentes, use o SendTo método.If you are using a connectionless protocol and plan to send data to several different hosts, you should use the SendTo method. Se você não usar o SendTo método, precisará chamar Connect antes de cada chamada para Send .If you do not use the SendTo method, you will have to call Connect before each call to Send. Você pode usar SendTo mesmo depois de ter estabelecido um host remoto padrão com o Connect .You can use SendTo even after you have established a default remote host with Connect. Você também pode alterar o host remoto padrão antes de chamar Send fazendo outra chamada para Connect .You can also change the default remote host prior to calling Send by making another call to Connect.

Se você estiver usando um protocolo orientado a conexão, 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 .If you are using a connection-oriented protocol, Send will block until all of the bytes in the buffer are sent, unless a time-out was set by using Socket.SendTimeout. Se o valor de tempo limite for excedido, a Send chamada gerará um SocketException .If the time-out value was exceeded, the Send call will throw a SocketException. No modo sem bloqueio, o Send pode ser concluído com êxito mesmo que ele envie menos do que o número de bytes no buffer.In non-blocking mode, Send may complete successfully even if it sends less than the number of bytes in the buffer. É responsabilidade do seu aplicativo manter o controle do número de bytes enviados e repetir a operação até que o aplicativo envie os bytes no buffer.It is your application's responsibility to keep track of the number of bytes sent and to retry the operation until the application sends the bytes in the buffer. Também não há nenhuma garantia de que os dados que você enviar aparecerão na rede imediatamente.There is also no guarantee that the data you send will appear on the network immediately. 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.To increase network efficiency, the underlying system may delay transmission until a significant amount of outgoing data is collected. Uma conclusão bem-sucedida do Send método significa que o sistema subjacente tinha espaço para armazenar em buffer os dados de um envio de rede.A successful completion of the Send method means that the underlying system has had room to buffer your data for a network send.

Observação

Se você receber um SocketException , use a SocketException.ErrorCode propriedade para obter o código de erro específico.If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. 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.After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

Observação

A conclusão bem-sucedida de um envio não indica que os dados foram entregues com êxito.The successful completion of a send does not indicate that the data was successfully delivered. 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 de não bloqueio.If no buffer space is available within the transport system to hold the data to be transmitted, send will block unless the socket has been placed in nonblocking mode.

Observação

Esse membro emite o rastreamento de informações quando você ativa o rastreamento de rede em seu aplicativo.This member outputs trace information when you enable network tracing in your application. Para obter mais informações, consulte rastreamento de rede na .NET Framework.For more information, see Network Tracing in the .NET Framework.

Aplica-se a

Send(ReadOnlySpan<Byte>, SocketFlags, SocketError)

Envia dados para um Socket conectado usando o SocketFlags especificado.Sends data to a connected Socket using the specified SocketFlags.

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.A span of bytes that contains the data to be sent.

socketFlags
SocketFlags

Uma combinação bit a bit dos valores de enumeração que especifica os comportamentos de envio e recebimento.A bitwise combination of the enumeration values that specifies send and receive behaviors.

errorCode
SocketError

Quando esse método é retornado, contém um dos valores de enumeração que define códigos de erro para o soquete.When this method returns, contains one of the enumeration values that defines error codes for the socket.

Retornos

Int32

O número de bytes enviados para o Socket.The number of bytes sent to the Socket.

Exceções

Ocorreu um erro ao tentar acessar o soquete.An error occurred when attempting to access the socket.

O Socket foi fechado.The Socket has been closed.

Comentários

Send o envia dados de forma síncrona para o host remoto especificado no Connect Accept método ou e retorna o número de bytes enviados com êxito.Send synchronously sends data to the remote host specified in the Connect or Accept method and returns the number of bytes successfully sent. Send pode ser usado para protocolos orientados por conexão e sem conexão.Send can be used for both connection-oriented and connectionless protocols.

Essa sobrecarga requer um buffer que contém os dados que você deseja enviar.This overload requires a buffer that contains the data you want to send. O SocketFlags valor padrão é 0, o deslocamento do buffer assume como padrão 0 e o número de bytes a ser enviado por padrão é o tamanho do buffer.The SocketFlags value defaults to 0, the buffer offset defaults to 0, and the number of bytes to send defaults to the size of the buffer.

Se você estiver usando um protocolo sem conexão, deverá chamar Connect antes de chamar esse método ou Send gerará um SocketException .If you're using a connectionless protocol, you must call Connect before calling this method, or Send will throw a SocketException. Se você estiver usando um protocolo orientado a conexão, deverá usar o Connect para estabelecer uma conexão de host remoto ou usar o Accept para aceitar uma conexão de entrada.If you're using a connection-oriented protocol, you must either use Connect to establish a remote host connection, or use Accept to accept an incoming connection.

Se você estiver usando um protocolo sem conexão e planeja enviar dados para vários hosts diferentes, use o SendTo método.If you're using a connectionless protocol and plan to send data to several different hosts, you should use the SendTo method. Se você não usar o SendTo método, precisará chamar antes de Connect cada chamada para Send .If you don't use the SendTo method, you'll have to call Connect before each call to Send. Você pode usar SendTo mesmo depois de ter estabelecido um host remoto padrão com o Connect .You can use SendTo even after you've established a default remote host with Connect. Você também pode alterar o host remoto padrão antes Send de chamar fazendo outra chamada para Connect .You can also change the default remote host before calling Send by making another call to Connect.

Se você estiver usando um protocolo orientado a conexão, 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 .If you're using a connection-oriented protocol, Send will block until all of the bytes in the buffer are sent, unless a time-out was set by using Socket.SendTimeout. Se o valor de tempo limite for excedido, a Send chamada gerará um SocketException .If the time-out value was exceeded, the Send call will throw a SocketException. No modo de não bloqueio, Send pode ser concluído com êxito mesmo que ele envie menos do que o número de bytes no buffer.In nonblocking mode, Send may complete successfully even if it sends less than the number of bytes in the buffer. É responsabilidade do seu aplicativo manter o controle do número de bytes enviados e repetir a operação até que o aplicativo envie os bytes no buffer.It is your application's responsibility to keep track of the number of bytes sent and to retry the operation until the application sends the bytes in the buffer. Também não há nenhuma garantia de que os dados que você enviar aparecerão na rede imediatamente.There's also no guarantee that the data you send will appear on the network immediately. 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.To increase network efficiency, the underlying system may delay transmission until a significant amount of outgoing data is collected. Uma conclusão bem-sucedida do Send método significa que o sistema subjacente tinha espaço para armazenar em buffer os dados de um envio de rede.A successful completion of the Send method means that the underlying system has had room to buffer your data for a network send.

Observação

Se você receber um SocketException , use a SocketException.ErrorCode propriedade para obter o código de erro específico.If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. 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.After you've obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

Esse membro emite o rastreamento de informações quando você ativa o rastreamento de rede em seu aplicativo.This member outputs trace information when you enable network tracing in your application. Para obter mais informações, consulte rastreamento de rede na .NET Framework.For more information, see Network Tracing in the .NET Framework.

Importante

A conclusão bem-sucedida de um envio não indica que os dados foram entregues com êxito.The successful completion of a send does not indicate that the data was successfully delivered. 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 de não bloqueio.If no buffer space is available within the transport system to hold the data to be transmitted, send will block unless the socket has been placed in nonblocking mode.

Confira também

Aplica-se a

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.Sends the specified number of bytes of data to a connected Socket, starting at the specified offset, and using the specified SocketFlags.

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.An array of type Byte that contains the data to be sent.

offset
Int32

A posição no buffer de dados na qual o envio de dados deve começar.The position in the data buffer at which to begin sending data.

size
Int32

O número de bytes a serem enviados.The number of bytes to send.

socketFlags
SocketFlags

Uma combinação bit a bit dos valores SocketFlags.A bitwise combination of the SocketFlags values.

Retornos

Int32

O número de bytes enviados para o Socket.The number of bytes sent to the Socket.

Exceções

buffer é null.buffer is null.

offset é menor que 0.offset is less than 0.

- ou --or- offset é maior que o comprimento do buffer.offset is greater than the length of buffer.

- ou --or- size é menor que 0.size is less than 0.

- ou --or- size é maior que o comprimento da subtração de buffer e do valor do parâmetro offset.size is greater than the length of buffer minus the value of the offset parameter.

socketFlags não é uma combinação válida de valores.socketFlags is not a valid combination of values.

- ou --or- Ocorre um erro de sistema operacional ao acessar o Socket.An operating system error occurs while accessing the Socket.

O Socket foi fechado.The Socket has been closed.

Exemplos

O exemplo de código a seguir especifica o buffer de dados, um deslocamento, um tamanho e SocketFlags para enviar dados a um conectado Socket .The following code example specifies the data buffer, an offset, a size, and SocketFlags for sending data to a connected 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, 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);
        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 o envia dados de forma síncrona para o host remoto especificado no Connect Accept método ou e retorna o número de bytes enviados com êxito.Send synchronously sends data to the remote host specified in the Connect or Accept method and returns the number of bytes successfully sent. Send pode ser usado para protocolos orientados por conexão e sem conexão.Send can be used for both connection-oriented and connectionless protocols.

Nessa sobrecarga, se você especificar o DontRoute sinalizador como o socketflags parâmetro, os dados que você está enviando não serão roteados.In this overload, if you specify the DontRoute flag as the socketflags parameter, the data you are sending will not be routed.

Se você estiver usando um protocolo sem conexão, deverá chamar Connect antes de chamar esse método ou Send gerará um SocketException .If you are using a connectionless protocol, you must call Connect before calling this method or Send will throw a SocketException. Se você estiver usando um protocolo orientado a conexão, deverá usar o Connect para estabelecer uma conexão de host remoto ou usar o Accept para aceitar uma conexão de entrada.If you are using a connection-oriented protocol, you must either use Connect to establish a remote host connection, or use Accept to accept an incoming connection.

Se você estiver usando um protocolo sem conexão e planeja enviar dados para vários hosts diferentes, deverá usar o SendTo .If you are using a connectionless protocol and plan to send data to several different hosts, you should use SendTo. Se você não usar o SendTo , precisará chamar Connect antes de cada chamada para Send .If you do not use SendTo, you will have to call Connect before each call to Send. Não há problema em usar SendTo mesmo depois de estabelecer um host remoto padrão com o Connect .It is okay to use SendTo even after you have established a default remote host with Connect. Você também pode alterar o host remoto padrão antes de chamar Send fazendo outra chamada para Connect .You can also change the default remote host prior to calling Send by making another call to 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.You must also be sure that the size does not exceed the maximum packet size of the underlying service provider. Se tiver, o datagrama não será enviado e Send gerará um SocketException .If it does, the datagram will not be sent and Send will throw a SocketException.

Se você estiver usando um protocolo orientado a conexão, Send o será bloqueado até que o número solicitado de bytes seja enviado, a menos que um tempo limite tenha sido definido usando Socket.SendTimeout .If you are using a connection-oriented protocol, Send will block until the requested number of bytes are sent, unless a time-out was set by using Socket.SendTimeout. Se o valor de tempo limite for excedido, a Send chamada gerará um SocketException .If the time-out value was exceeded, the Send call will throw a SocketException. No modo não bloqueado, o Send pode ser concluído com êxito mesmo que ele envie menos que o número de bytes solicitados.In nonblocking mode, Send may complete successfully even if it sends less than the number of bytes you request. É responsabilidade do seu aplicativo manter o controle do número de bytes enviados e repetir a operação até que o aplicativo envie o número solicitado de bytes.It is your application's responsibility to keep track of the number of bytes sent and to retry the operation until the application sends the requested number of bytes. Também não há nenhuma garantia de que os dados que você enviar aparecerão na rede imediatamente.There is also no guarantee that the data you send will appear on the network immediately. 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.To increase network efficiency, the underlying system may delay transmission until a significant amount of outgoing data is collected. Uma conclusão bem-sucedida do Send método significa que o sistema subjacente tinha espaço para armazenar em buffer os dados de um envio de rede.A successful completion of the Send method means that the underlying system has had room to buffer your data for a network send.

Observação

Se você receber um SocketException , use a SocketException.ErrorCode propriedade para obter o código de erro específico.If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. 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.After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

Observação

A conclusão bem-sucedida de um envio não indica que os dados foram entregues com êxito.The successful completion of a send does not indicate that the data was successfully delivered. 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 de não bloqueio.If no buffer space is available within the transport system to hold the data to be transmitted, send will block unless the socket has been placed in nonblocking mode.

Observação

Esse membro emite o rastreamento de informações quando você ativa o rastreamento de rede em seu aplicativo.This member outputs trace information when you enable network tracing in your application. Para obter mais informações, consulte rastreamento de rede na .NET Framework.For more information, see Network Tracing in the .NET Framework.

Confira também

Aplica-se a

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

Envia o número especificado de bytes de dados a um Socket conectado, iniciando no deslocamento especificado e usando o SocketFlags especificadoSends the specified number of bytes of data to a connected Socket, starting at the specified offset, and using the specified SocketFlags

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.An array of type Byte that contains the data to be sent.

offset
Int32

A posição no buffer de dados na qual o envio de dados deve começar.The position in the data buffer at which to begin sending data.

size
Int32

O número de bytes a serem enviados.The number of bytes to send.

socketFlags
SocketFlags

Uma combinação bit a bit dos valores SocketFlags.A bitwise combination of the SocketFlags values.

errorCode
SocketError

Um objeto SocketError que armazena o erro de soquete.A SocketError object that stores the socket error.

Retornos

Int32

O número de bytes enviados para o Socket.The number of bytes sent to the Socket.

Exceções

buffer é null.buffer is null.

offset é menor que 0.offset is less than 0.

- ou --or- offset é maior que o comprimento do buffer.offset is greater than the length of buffer.

- ou --or- size é menor que 0.size is less than 0.

- ou --or- size é maior que o comprimento da subtração de buffer e do valor do parâmetro offset.size is greater than the length of buffer minus the value of the offset parameter.

socketFlags não é uma combinação válida de valores.socketFlags is not a valid combination of values.

- ou --or- Ocorre um erro de sistema operacional ao acessar o Socket.An operating system error occurs while accessing the Socket.

O Socket foi fechado.The Socket has been closed.

Exemplos

O exemplo de código a seguir especifica o buffer de dados, um deslocamento, um tamanho e SocketFlags para enviar dados a um conectado Socket .The following code example specifies the data buffer, an offset, a size, and SocketFlags for sending data to a connected 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, 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);
        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 o envia dados de forma síncrona para o host remoto especificado no Connect Accept método ou e retorna o número de bytes enviados com êxito.Send synchronously sends data to the remote host specified in the Connect or Accept method and returns the number of bytes successfully sent. Send pode ser usado para protocolos orientados por conexão e sem conexão.Send can be used for both connection-oriented and connectionless protocols.

Nessa sobrecarga, se você especificar o DontRoute sinalizador como o socketflags parâmetro, os dados que você está enviando não serão roteados.In this overload, if you specify the DontRoute flag as the socketflags parameter, the data you are sending will not be routed.

Se você estiver usando um protocolo sem conexão, deverá chamar Connect antes de chamar esse método ou Send gerará um SocketException .If you are using a connectionless protocol, you must call Connect before calling this method or Send will throw a SocketException. Se você estiver usando um protocolo orientado a conexão, deverá usar o Connect para estabelecer uma conexão de host remoto ou usar o Accept para aceitar uma conexão de entrada.If you are using a connection-oriented protocol, you must either use Connect to establish a remote host connection, or use Accept to accept an incoming connection.

Se você estiver usando um protocolo sem conexão e planeja enviar dados para vários hosts diferentes, deverá usar o SendTo .If you are using a connectionless protocol and plan to send data to several different hosts, you should use SendTo. Se você não usar o SendTo , precisará chamar Connect antes de cada chamada para Send .If you do not use SendTo, you will have to call Connect before each call to Send. Não há problema em usar SendTo mesmo depois de estabelecer um host remoto padrão com o Connect .It is okay to use SendTo even after you have established a default remote host with Connect. Você também pode alterar o host remoto padrão antes de chamar Send fazendo outra chamada para Connect .You can also change the default remote host prior to calling Send by making another call to 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.You must also be sure that the size does not exceed the maximum packet size of the underlying service provider. Se tiver, o datagrama não será enviado e Send gerará um SocketException .If it does, the datagram will not be sent and Send will throw a SocketException.

Se você estiver usando um protocolo orientado a conexão, Send o será bloqueado até que o número solicitado de bytes seja enviado, a menos que um tempo limite tenha sido definido usando Socket.SendTimeout .If you are using a connection-oriented protocol, Send will block until the requested number of bytes are sent, unless a time-out was set by using Socket.SendTimeout. Se o valor de tempo limite for excedido, a Send chamada gerará um SocketException .If the time-out value was exceeded, the Send call will throw a SocketException. No modo não bloqueado, o Send pode ser concluído com êxito mesmo que ele envie menos que o número de bytes solicitados.In nonblocking mode, Send may complete successfully even if it sends less than the number of bytes you request. É responsabilidade do seu aplicativo manter o controle do número de bytes enviados e repetir a operação até que o aplicativo envie o número solicitado de bytes.It is your application's responsibility to keep track of the number of bytes sent and to retry the operation until the application sends the requested number of bytes. Também não há nenhuma garantia de que os dados que você enviar aparecerão na rede imediatamente.There is also no guarantee that the data you send will appear on the network immediately. 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.To increase network efficiency, the underlying system may delay transmission until a significant amount of outgoing data is collected. Uma conclusão bem-sucedida do Send método significa que o sistema subjacente tinha espaço para armazenar em buffer os dados de um envio de rede.A successful completion of the Send method means that the underlying system has had room to buffer your data for a network send.

Observação

Se você receber um SocketException , use a SocketException.ErrorCode propriedade para obter o código de erro específico.If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. 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.After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

Observação

A conclusão bem-sucedida de um envio não indica que os dados foram entregues com êxito.The successful completion of a send does not indicate that the data was successfully delivered. 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 de não bloqueio.If no buffer space is available within the transport system to hold the data to be transmitted, send will block unless the socket has been placed in nonblocking mode.

Observação

Esse membro emite o rastreamento de informações quando você ativa o rastreamento de rede em seu aplicativo.This member outputs trace information when you enable network tracing in your application. Para obter mais informações, consulte rastreamento de rede na .NET Framework.For more information, see Network Tracing in the .NET Framework.

Confira também

Aplica-se a