Socket.Send Método

Definição

Envia dados para um .Socket

Sobrecargas

Name Description
Send(Byte[])

Envia dados para um .Socket

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

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

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

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

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

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

Send(Byte[], Int32, SocketFlags)

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

Send(ReadOnlySpan<Byte>, SocketFlags, SocketError)

Envia dados para um ligado Socket usando o especificado SocketFlags.

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

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

Send(Byte[], SocketFlags)

Envia dados para um ligado Socket usando o especificado SocketFlags.

Send(ReadOnlySpan<Byte>)

Envia dados para um .Socket

Send(IList<ArraySegment<Byte>>)

Envia o conjunto de buffers na lista para um .Socket

Send(ReadOnlySpan<Byte>, SocketFlags)

Envia dados para um ligado Socket usando o especificado SocketFlags.

Send(Byte[])

Envia dados para um .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[]

Um array de tipo Byte que contém os dados a enviar.

Devoluções

O número de bytes enviados para o Socket.

Exceções

buffer é null.

Ocorreu um erro ao tentar aceder ao soquete.

O Socket local foi encerrado.

Exemplos

O exemplo de código seguinte demonstra o envio de dados num .Socket

// 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

Observações

Send Envia dados de forma síncrona para o host remoto especificado no Connect método OR Accept e retorna o número de bytes enviados com sucesso. Send pode ser usado tanto para protocolos orientados a ligação como sem ligação.

Esta sobrecarga requer um buffer que contenha os dados que pretende enviar. O SocketFlags valor por defeito é 0, o deslocamento do buffer é 0, e o número de bytes a enviar corresponde ao tamanho do buffer.

Se estiver a usar um protocolo sem conexão, deve chamar Connect antes de chamar este método, ou Send irá lançar um SocketException. Se estiver a usar um protocolo orientado a ligações, deve usar Connect para estabelecer uma ligação hoste remota, ou usar Accept para aceitar uma ligação recebida.

Se estiver a usar um protocolo sem ligação e planeia enviar dados para vários hosts diferentes, deve usar o SendTo método. Se não usar o SendTo método, terá de ligar Connect antes de cada chamada para Send. Pode usar SendTo mesmo depois de ter estabelecido um host remoto predefinido com Connect. Também pode alterar o host remoto predefinido antes de ligar Send , fazendo outra chamada para Connect.

Se estiver a usar um protocolo orientado à ligação, Send irá bloquear até que todos os bytes do buffer sejam enviados, a menos que tenha sido definido um time-out usando Socket.SendTimeout. Se o valor de time-out for ultrapassado, a Send chamada lançará um SocketException. Em modo não bloqueante, Send pode ser concluído com sucesso mesmo que envie menos do que o número de bytes no buffer. É responsabilidade da sua aplicação acompanhar o número de bytes enviados e tentar novamente a operação até que a aplicação envie os bytes no buffer. Também não há garantia de que os dados que envia apareçam imediatamente na rede. 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 recolhida. A conclusão bem-sucedida do Send método significa que o sistema subjacente teve espaço para armazenar os seus dados para um envio em rede.

Note

Se receber um SocketException, use a SocketException.ErrorCode propriedade para obter o código de erro específico. Depois de obter este código, consulte a documentação do código de erro da API Windows versão 2 dos Sockets para uma descrição detalhada do erro.

Note

A conclusão bem-sucedida de um envio não indica que os dados foram entregues com sucesso. Se não houver espaço de buffer disponível dentro do sistema de transporte para armazenar os dados a transmitir, enviar irá bloquear, a menos que o socket tenha sido colocado em modo não bloqueante.

Note

Esse membro gera informações de rastreamento quando você habilita o rastreamento de rede em seu aplicativo. Para mais informações, consulte Network Tracing in .NET Framework.

Ver também

Aplica-se a

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

Envia o número especificado de bytes de dados para um conjunto conectado Socket, começando no deslocamento especificado, e usando o especificado 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[]

Um array de tipo Byte que contém os dados a enviar.

offset
Int32

A posição no buffer de dados onde começar a enviar dados.

size
Int32

O número de bytes a enviar.

socketFlags
SocketFlags

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

errorCode
SocketError

Um SocketError objeto que armazena o erro do soquete.

Devoluções

O número de bytes enviados para o Socket.

Exceções

buffer é null.

offset é inferior a 0.

-ou-

offset é maior do que o comprimento de buffer.

-ou-

size é inferior a 0.

-ou-

size é maior do que o comprimento de buffer menos o valor do offset parâmetro.

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

-ou-

Ocorre um erro do sistema operativo ao aceder ao Socketarquivo .

O Socket local foi encerrado.

Exemplos

O seguinte exemplo de código especifica o buffer de dados, um deslocamento, um tamanho e SocketFlags para enviar dados para um .Socket

// 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

Observações

Send Envia dados de forma síncrona para o host remoto especificado no Connect método OR Accept e retorna o número de bytes enviados com sucesso. Send pode ser usado tanto para protocolos orientados a ligação como sem ligação.

Nesta sobrecarga, se especificar a DontRoute flag como parâmetro socketflags , os dados que está a enviar não serão encaminhados.

Se estiver a usar um protocolo sem conexão, deve chamar Connect antes de chamar este método, caso contrário Send irá lançar um SocketException. Se estiver a usar um protocolo orientado a ligações, deve usar Connect para estabelecer uma ligação hoste remota, ou usar Accept para aceitar uma ligação recebida.

Se estiver a usar um protocolo sem ligação e planeia enviar dados para vários hosts diferentes, deve usar SendTo. Se não usar SendTo, terá de ligar Connect antes de cada chamada para Send. É aceitável usar SendTo mesmo depois de ter estabelecido um host remoto por defeito com Connect. Também pode alterar o host remoto predefinido antes de ligar Send , fazendo outra chamada para Connect.

Deve também garantir que o tamanho não excede o tamanho máximo do pacote do fornecedor de serviço subjacente. Se o fizer, o datagrama não será enviado e Send irá lançar um SocketException.

Se estiver a usar um protocolo orientado à ligação, Send irá bloquear até que o número solicitado de bytes seja enviado, a menos que um time-out tenha sido definido usando Socket.SendTimeout. Se o valor de time-out for ultrapassado, a Send chamada lançará um SocketException. Em modo não bloqueante, Send pode ser concluído com sucesso mesmo que envie menos do que o número de bytes que solicita. É responsabilidade da sua aplicação acompanhar o número de bytes enviados e tentar novamente a operação até que a aplicação envie o número de bytes solicitado. Também não há garantia de que os dados que envia apareçam imediatamente na rede. 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 recolhida. A conclusão bem-sucedida do Send método significa que o sistema subjacente teve espaço para armazenar os seus dados para um envio em rede.

Note

Se receber um SocketException, use a SocketException.ErrorCode propriedade para obter o código de erro específico. Depois de obter este código, consulte a documentação do código de erro da API Windows versão 2 dos Sockets para uma descrição detalhada do erro.

Note

A conclusão bem-sucedida de um envio não indica que os dados foram entregues com sucesso. Se não houver espaço de buffer disponível dentro do sistema de transporte para armazenar os dados a transmitir, enviar irá bloquear, a menos que o socket tenha sido colocado em modo não bloqueante.

Note

Esse membro gera informações de rastreamento quando você habilita o rastreamento de rede em seu aplicativo. Para mais informações, consulte Network Tracing in .NET Framework.

Ver também

Aplica-se a

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

Envia o número especificado de bytes de dados para um conjunto conectado Socket, começando no deslocamento especificado, e usando o especificado 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[]

Um array de tipo Byte que contém os dados a enviar.

offset
Int32

A posição no buffer de dados onde começar a enviar dados.

size
Int32

O número de bytes a enviar.

socketFlags
SocketFlags

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

Devoluções

O número de bytes enviados para o Socket.

Exceções

buffer é null.

offset é inferior a 0.

-ou-

offset é maior do que o comprimento de buffer.

-ou-

size é inferior a 0.

-ou-

size é maior do que o comprimento de buffer menos o valor do offset parâmetro.

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

-ou-

Ocorre um erro do sistema operativo ao aceder ao Socketarquivo .

O Socket local foi encerrado.

Exemplos

O seguinte exemplo de código especifica o buffer de dados, um deslocamento, um tamanho e SocketFlags para enviar dados para um .Socket

// 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

Observações

Send Envia dados de forma síncrona para o host remoto especificado no Connect método OR Accept e retorna o número de bytes enviados com sucesso. Send pode ser usado tanto para protocolos orientados a ligação como sem ligação.

Nesta sobrecarga, se especificar a DontRoute flag como parâmetro socketflags , os dados que está a enviar não serão encaminhados.

Se estiver a usar um protocolo sem conexão, deve chamar Connect antes de chamar este método, caso contrário Send irá lançar um SocketException. Se estiver a usar um protocolo orientado a ligações, deve usar Connect para estabelecer uma ligação hoste remota, ou usar Accept para aceitar uma ligação recebida.

Se estiver a usar um protocolo sem ligação e planeia enviar dados para vários hosts diferentes, deve usar SendTo. Se não usar SendTo, terá de ligar Connect antes de cada chamada para Send. É aceitável usar SendTo mesmo depois de ter estabelecido um host remoto por defeito com Connect. Também pode alterar o host remoto predefinido antes de ligar Send , fazendo outra chamada para Connect.

Deve também garantir que o tamanho não excede o tamanho máximo do pacote do fornecedor de serviço subjacente. Se o fizer, o datagrama não será enviado e Send irá lançar um SocketException.

Se estiver a usar um protocolo orientado à ligação, Send irá bloquear até que o número solicitado de bytes seja enviado, a menos que um time-out tenha sido definido usando Socket.SendTimeout. Se o valor de time-out for ultrapassado, a Send chamada lançará um SocketException. Em modo não bloqueante, Send pode ser concluído com sucesso mesmo que envie menos do que o número de bytes que solicita. É responsabilidade da sua aplicação acompanhar o número de bytes enviados e tentar novamente a operação até que a aplicação envie o número de bytes solicitado. Também não há garantia de que os dados que envia apareçam imediatamente na rede. 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 recolhida. A conclusão bem-sucedida do Send método significa que o sistema subjacente teve espaço para armazenar os seus dados para um envio em rede.

Note

Se receber um SocketException, use a SocketException.ErrorCode propriedade para obter o código de erro específico. Depois de obter este código, consulte a documentação do código de erro da API Windows versão 2 dos Sockets para uma descrição detalhada do erro.

Note

A conclusão bem-sucedida de um envio não indica que os dados foram entregues com sucesso. Se não houver espaço de buffer disponível dentro do sistema de transporte para armazenar os dados a transmitir, enviar irá bloquear, a menos que o socket tenha sido colocado em modo não bloqueante.

Note

Esse membro gera informações de rastreamento quando você habilita o rastreamento de rede em seu aplicativo. Para mais informações, consulte Network Tracing in .NET Framework.

Ver também

Aplica-se a

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

Envia o conjunto de buffers na lista para um conectado Socket, usando o especificado 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);
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 enviar.

socketFlags
SocketFlags

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

errorCode
SocketError

Um SocketError objeto que armazena o erro do soquete.

Devoluções

O número de bytes enviados para o Socket.

Exceções

buffers é null.

buffers está vazio.

Ocorreu um erro ao tentar aceder ao soquete.

O Socket local foi encerrado.

Observações

Esta sobrecarga requer pelo menos um buffer que contenha os dados que pretende enviar. O SocketFlags valor é 0 por defeito. Se especificar o DontRoute flag como parâmetro socketFlags , os dados que está a enviar não serão encaminhados.

Se estiver a usar um protocolo sem conexão, deve chamar Connect antes de chamar este método, ou Send irá lançar um SocketException. Se estiver a usar um protocolo orientado a ligações, deve usar Connect para estabelecer uma ligação hoste remota, ou usar Accept para aceitar uma ligação recebida.

Se estiver a usar um protocolo sem ligação e planeia enviar dados para vários hosts diferentes, deve usar o SendTo método. Se não usar o SendTo método, terá de ligar Connect antes de cada chamada para Send. Pode usar SendTo mesmo depois de ter estabelecido um host remoto predefinido com Connect. Também pode alterar o host remoto predefinido antes de ligar Send , fazendo outra chamada para Connect.

Se estiver a usar um protocolo orientado à ligação, Send irá bloquear até que todos os bytes do buffer sejam enviados, a menos que tenha sido definido um time-out usando Socket.SendTimeout. Se o valor de time-out for ultrapassado, a Send chamada lançará um SocketException. Em modo não bloqueante, Send pode ser concluído com sucesso mesmo que envie menos do que o número de bytes no buffer. É responsabilidade da sua aplicação acompanhar o número de bytes enviados e tentar novamente a operação até que a aplicação envie os bytes no buffer. Também não há garantia de que os dados que envia apareçam imediatamente na rede. 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 recolhida. A conclusão bem-sucedida do Send método significa que o sistema subjacente teve espaço para armazenar os seus dados para um envio em rede.

Note

Se receber um SocketException, use a SocketException.ErrorCode propriedade para obter o código de erro específico. Depois de obter este código, consulte a documentação do código de erro da API Windows versão 2 dos Sockets para uma descrição detalhada do erro.

Note

A conclusão bem-sucedida de um envio não indica que os dados foram entregues com sucesso. Se não houver espaço de buffer disponível dentro do sistema de transporte para armazenar os dados a transmitir, enviar irá bloquear, a menos que o socket tenha sido colocado em modo não bloqueante.

Note

Esse membro gera informações de rastreamento quando você habilita o rastreamento de rede em seu aplicativo. Para mais informações, consulte Network Tracing in .NET Framework.

Aplica-se a

Send(Byte[], Int32, SocketFlags)

Envia o número especificado de bytes de dados para um conjunto conectado Socket, usando o especificado 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[]

Um array de tipo Byte que contém os dados a enviar.

size
Int32

O número de bytes a enviar.

socketFlags
SocketFlags

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

Devoluções

O número de bytes enviados para o Socket.

Exceções

buffer é null.

size é inferior a 0 ou excede o tamanho do buffer.

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

-ou-

Ocorre um erro do sistema operativo ao aceder ao socket.

O Socket local foi encerrado.

Exemplos

O seguinte exemplo de código 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.
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

Observações

Send Envia dados de forma síncrona para o host remoto estabelecido no Connect método OR Accept e devolve o número de bytes enviados com sucesso. Send pode ser usado tanto para protocolos orientados a ligação como sem ligação.

Esta sobrecarga requer um buffer que contenha os dados que pretende enviar, o número de bytes que deseja enviar e uma combinação bit a bit de qualquer SocketFlags. Se especificar a DontRoute flag como parâmetro socketflags , os dados que está a enviar não serão encaminhados.

Se estiver a usar um protocolo sem conexão, deve chamar Connect antes de chamar este método, ou Send irá lançar um SocketException. Se estiver a usar um protocolo orientado para conexões, deve usar Connect para estabelecer uma ligação host-host remota, ou usar Accept para aceitar uma ligação recebida.

Se estiveres a usar um protocolo sem ligação e planeias enviar dados para vários hosts diferentes, deves usar o SendTo método. Se não usar o SendTo método, terá de chamá-lo Connect antes de cada chamada ao Send método. Pode usar SendTo mesmo depois de ter estabelecido um host remoto por defeito com Connect. Também pode alterar o host remoto predefinido antes de ligar Send , fazendo outra chamada para Connect.

Com um protocolo orientado à ligação, Send irá bloquear até que o número solicitado de bytes seja enviado, a menos que um time-out tenha sido definido usando Socket.SendTimeout. Se o valor de time-out for ultrapassado, a Send chamada lançará um SocketException. Em modo não bloqueante, Send pode ser concluído com sucesso mesmo que envie menos do que o número de bytes que solicita. É responsabilidade da sua aplicação acompanhar o número de bytes enviados e tentar novamente a operação até que a aplicação envie o número de bytes solicitado. Também não há garantia de que os dados que envia apareçam imediatamente na rede. 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 recolhida. A conclusão bem-sucedida do Send método significa que o sistema subjacente teve espaço para armazenar os seus dados para um envio em rede.

Note

Deve garantir que o tamanho não ultrapassa o tamanho máximo do pacote do fornecedor de serviço subjacente. Se o fizer, o datagrama não será enviado e Send irá lançar um SocketException. Se receber um SocketException, use a SocketException.ErrorCode propriedade para obter o código de erro específico. Depois de obter este código, consulte a documentação do código de erro da API Windows versão 2 dos Sockets para uma descrição detalhada do erro.

Esse membro gera informações de rastreamento quando você habilita o rastreamento de rede em seu aplicativo. Para mais informações, consulte Network Tracing in .NET Framework.

Importante

A conclusão bem-sucedida de um envio não indica que os dados foram entregues com sucesso. Se não houver espaço de buffer disponível dentro do sistema de transporte para armazenar os dados a transmitir, enviar irá bloquear, a menos que o socket tenha sido colocado em modo não bloqueante.

Ver também

Aplica-se a

Send(ReadOnlySpan<Byte>, SocketFlags, SocketError)

Envia dados para um ligado Socket usando o especificado 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 enviar.

socketFlags
SocketFlags

Uma combinação bit a bit dos valores de enumeração que especifica comportamentos de enviar e receber.

errorCode
SocketError

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

Devoluções

O número de bytes enviados para o Socket.

Exceções

Ocorreu um erro ao tentar aceder ao soquete.

O Socket local foi encerrado.

Observações

Send Envia dados de forma síncrona para o host remoto especificado no Connect método OR Accept e retorna o número de bytes enviados com sucesso. Send pode ser usado tanto para protocolos orientados a ligação como sem ligação.

Esta sobrecarga requer um buffer que contenha os dados que pretende enviar. O SocketFlags valor por defeito é 0, o deslocamento do buffer é 0, e o número de bytes a enviar corresponde ao tamanho do buffer.

Se estiver a usar um protocolo sem conexão, deve chamar Connect antes de chamar este método, ou Send irá lançar um SocketException. Se estiver a usar um protocolo orientado para conexões, deve usar Connect para estabelecer uma ligação host-host remota, ou usar Accept para aceitar uma ligação recebida.

Se estiveres a usar um protocolo sem ligação e planeias enviar dados para vários hosts diferentes, deves usar o SendTo método. Se não usar o SendTo método, terá de ligar Connect antes de cada chamada para Send. Pode usar SendTo mesmo depois de ter estabelecido um host remoto por defeito com Connect. Também pode alterar o host remoto predefinido antes de ligar Send , fazendo outra chamada para Connect.

Se estiver a usar um protocolo orientado à ligação, Send irá bloquear até que todos os bytes do buffer sejam enviados, a menos que um time-out tenha sido definido usando Socket.SendTimeout. Se o valor de time-out for ultrapassado, a Send chamada lançará um SocketException. Em modo não bloqueante, Send pode ser concluído com sucesso mesmo que envie menos do que o número de bytes no buffer. É responsabilidade da sua aplicação acompanhar o número de bytes enviados e tentar novamente a operação até que a aplicação envie os bytes no buffer. Também não há garantia de que os dados que envia apareçam imediatamente na rede. 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 recolhida. A conclusão bem-sucedida do Send método significa que o sistema subjacente teve espaço para armazenar os seus dados para um envio em rede.

Note

Se receber um SocketException, use a SocketException.ErrorCode propriedade para obter o código de erro específico. Depois de obter este código, consulte a documentação do código de erro da API Windows Sockets versão 2 para uma descrição detalhada do erro.

Esse membro gera informações de rastreamento quando você habilita o rastreamento de rede em seu aplicativo. Para mais informações, consulte Network Tracing in .NET Framework.

Importante

A conclusão bem-sucedida de um envio não indica que os dados foram entregues com sucesso. Se não houver espaço de buffer disponível dentro do sistema de transporte para armazenar os dados a transmitir, enviar irá bloquear, a menos que o socket tenha sido colocado em modo não bloqueante.

Ver também

Aplica-se a

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

Envia o conjunto de buffers na lista para um conectado Socket, usando o especificado 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 enviar.

socketFlags
SocketFlags

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

Devoluções

O número de bytes enviados para o Socket.

Exceções

buffers é null.

buffers está vazio.

Ocorreu um erro ao tentar aceder ao soquete.

O Socket local foi encerrado.

Observações

Esta sobrecarga requer pelo menos um buffer que contenha os dados que pretende enviar. O SocketFlags valor é 0 por defeito. Se especificar o DontRoute flag como parâmetro socketFlags , os dados que está a enviar não serão encaminhados.

Se estiver a usar um protocolo sem conexão, deve chamar Connect antes de chamar este método, ou Send irá lançar um SocketException. Se estiver a usar um protocolo orientado a ligações, deve usar Connect para estabelecer uma ligação hoste remota, ou usar Accept para aceitar uma ligação recebida.

Se estiver a usar um protocolo sem ligação e planeia enviar dados para vários hosts diferentes, deve usar o SendTo método. Se não usar o SendTo método, terá de ligar Connect antes de cada chamada para Send. Pode usar SendTo mesmo depois de ter estabelecido um host remoto predefinido com Connect. Também pode alterar o host remoto predefinido antes de ligar Send , fazendo outra chamada para Connect.

Se estiver a usar um protocolo orientado à ligação, Send irá bloquear até que todos os bytes do buffer sejam enviados, a menos que tenha sido definido um time-out usando Socket.SendTimeout. Se o valor de time-out for ultrapassado, a Send chamada lançará um SocketException. Em modo não bloqueante, Send pode ser concluído com sucesso mesmo que envie menos do que o número de bytes no buffer. É responsabilidade da sua aplicação acompanhar o número de bytes enviados e tentar novamente a operação até que a aplicação envie os bytes no buffer. Também não há garantia de que os dados que envia apareçam imediatamente na rede. 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 recolhida. A conclusão bem-sucedida do Send método significa que o sistema subjacente teve espaço para armazenar os seus dados para um envio em rede.

Note

Se receber um SocketException, use a SocketException.ErrorCode propriedade para obter o código de erro específico. Depois de obter este código, consulte a documentação do código de erro da API Windows versão 2 dos Sockets para uma descrição detalhada do erro.

Note

A conclusão bem-sucedida de um envio não indica que os dados foram entregues com sucesso. Se não houver espaço de buffer disponível dentro do sistema de transporte para armazenar os dados a transmitir, enviar irá bloquear, a menos que o socket tenha sido colocado em modo não bloqueante.

Note

Esse membro gera informações de rastreamento quando você habilita o rastreamento de rede em seu aplicativo. Para mais informações, consulte Network Tracing in .NET Framework.

Aplica-se a

Send(Byte[], SocketFlags)

Envia dados para um ligado Socket usando o especificado 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[]

Um array de tipo Byte que contém os dados a enviar.

socketFlags
SocketFlags

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

Devoluções

O número de bytes enviados para o Socket.

Exceções

buffer é null.

Ocorreu um erro ao tentar aceder ao soquete.

O Socket local foi encerrado.

Exemplos

O exemplo de código seguinte demonstra o envio de dados num .Socket

// 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

Observações

Send Envia dados de forma síncrona para o host remoto estabelecido no Connect método OR Accept e devolve o número de bytes enviados com sucesso. O Send método pode ser usado tanto para protocolos orientados por ligação como sem conexão.

Esta sobrecarga requer um buffer que contenha os dados que pretende enviar e uma combinação bit a bit de SocketFlags. O deslocamento do buffer é 0 por defeito, e o número de bytes a enviar corresponde ao tamanho do buffer. Se especificar o DontRoute flag como valor do socketflags parâmetro, os dados que está a enviar não serão encaminhados.

Se estiver a usar um protocolo sem conexão, deve chamar Connect antes de chamar este método, ou Send irá lançar um SocketException. Se estiver a usar um protocolo orientado a ligações, deve usar Connect para estabelecer uma ligação hoste remota, ou usar Accept para aceitar uma ligação recebida.

Se estiver a usar um protocolo sem ligação e planeia enviar dados para vários hosts diferentes, deve usar o SendTo método. Se não usar o SendTo método, terá de chamar o Connect método antes de cada chamada para Send. Pode usar SendTo mesmo depois de ter estabelecido um host remoto predefinido com Connect. Também pode alterar o host remoto predefinido antes de ligar Send , fazendo outra chamada para Connect.

Se estiver a usar um protocolo orientado à ligação, Send irá bloquear até que todos os bytes do buffer sejam enviados, a menos que tenha sido definido um time-out usando Socket.SendTimeout. Se o valor de time-out for ultrapassado, a Send chamada lançará um SocketException. Em modo não bloqueante, Send pode ser concluído com sucesso mesmo que envie menos do que o número de bytes no buffer. É responsabilidade da sua aplicação acompanhar o número de bytes enviados e tentar novamente a operação até que a aplicação envie o número de bytes solicitado. Também não há garantia de que os dados que envia apareçam imediatamente na rede. 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 recolhida. A conclusão bem-sucedida do Send método significa que o sistema subjacente teve espaço para armazenar os seus dados para um envio em rede.

Note

Deve garantir que o tamanho do seu buffer não excede o tamanho máximo do pacote do fornecedor de serviço subjacente. Se o fizer, o datagrama não será enviado e Send irá lançar um SocketException. Se receber um SocketException, use a SocketException.ErrorCode propriedade para obter o código de erro específico. Depois de obter este código, consulte a documentação do código de erro da API Windows versão 2 dos Sockets para uma descrição detalhada do erro.

Note

A conclusão bem-sucedida de um envio não indica que os dados foram entregues com sucesso. Se não houver espaço de buffer disponível dentro do sistema de transporte para armazenar os dados a transmitir, enviar irá bloquear, a menos que o socket tenha sido colocado em modo não bloqueante.

Note

Esse membro gera informações de rastreamento quando você habilita o rastreamento de rede em seu aplicativo. Para mais informações, consulte Network Tracing in .NET Framework.

Ver também

Aplica-se a

Send(ReadOnlySpan<Byte>)

Envia dados para um .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 enviar.

Devoluções

O número de bytes enviados para o Socket.

Exceções

Ocorreu um erro ao tentar aceder ao soquete.

O Socket local foi encerrado.

Observações

Send Envia dados de forma síncrona para o host remoto especificado no Connect método OR Accept e retorna o número de bytes enviados com sucesso. Send pode ser usado tanto para protocolos orientados a ligação como sem ligação.

Esta sobrecarga requer um buffer que contenha os dados que pretende enviar. O SocketFlags valor por defeito é 0, o deslocamento do buffer é 0, e o número de bytes a enviar corresponde ao tamanho do buffer.

Se estiver a usar um protocolo sem conexão, deve chamar Connect antes de chamar este método, ou Send irá lançar um SocketException. Se estiver a usar um protocolo orientado para conexões, deve usar Connect para estabelecer uma ligação host-host remota, ou usar Accept para aceitar uma ligação recebida.

Se estiveres a usar um protocolo sem ligação e planeias enviar dados para vários hosts diferentes, deves usar o SendTo método. Se não usar o SendTo método, terá de ligar Connect antes de cada chamada para Send. Pode usar SendTo mesmo depois de ter estabelecido um host remoto predefinido com Connect. Também pode alterar o host remoto predefinido antes de ligar Send , fazendo outra chamada para Connect.

Se estiver a usar um protocolo orientado à ligação, Send irá bloquear até que todos os bytes do buffer sejam enviados, a menos que um time-out tenha sido definido usando Socket.SendTimeout. Se o valor de time-out for ultrapassado, a Send chamada lançará um SocketException. Em modo não bloqueante, Send pode ser concluído com sucesso mesmo que envie menos do que o número de bytes no buffer. É responsabilidade da sua aplicação acompanhar o número de bytes enviados e tentar novamente a operação até que a aplicação envie os bytes no buffer. Também não há garantia de que os dados que envia apareçam imediatamente na rede. 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 recolhida. A conclusão bem-sucedida do Send método significa que o sistema subjacente teve espaço para armazenar os seus dados para um envio em rede.

Note

Se receber um SocketException, use a SocketException.ErrorCode propriedade para obter o código de erro específico. Depois de obter este código, consulte a documentação do código de erro da API Windows versão 2 dos Sockets para uma descrição detalhada do erro.

Esse membro gera informações de rastreamento quando você habilita o rastreamento de rede em seu aplicativo. Para mais informações, consulte Network Tracing in .NET Framework.

Importante

A conclusão bem-sucedida de um envio não indica que os dados foram entregues com sucesso. Se não houver espaço de buffer disponível dentro do sistema de transporte para armazenar os dados a transmitir, enviar irá bloquear, a menos que o socket tenha sido colocado em modo não bloqueante.

Ver também

Aplica-se a

Send(IList<ArraySegment<Byte>>)

Envia o conjunto de buffers na lista para um .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 enviar.

Devoluções

O número de bytes enviados para o Socket.

Exceções

buffers é null.

buffers está vazio.

Ocorreu um erro ao tentar aceder ao soquete. Consulte a secção de observações abaixo.

O Socket local foi encerrado.

Observações

Send pode ser usado tanto para protocolos orientados a ligação como sem ligação.

Esta sobrecarga requer pelo menos um buffer que contenha os dados que pretende enviar.

Se estiver a usar um protocolo sem conexão, deve chamar Connect antes de chamar este método, ou Send irá lançar um SocketException. Se estiver a usar um protocolo orientado a ligações, deve usar Connect para estabelecer uma ligação hoste remota, ou usar Accept para aceitar uma ligação recebida.

Se estiver a usar um protocolo sem ligação e planeia enviar dados para vários hosts diferentes, deve usar o SendTo método. Se não usar o SendTo método, terá de ligar Connect antes de cada chamada para Send. Pode usar SendTo mesmo depois de ter estabelecido um host remoto predefinido com Connect. Também pode alterar o host remoto predefinido antes de ligar Send , fazendo outra chamada para Connect.

Se estiver a usar um protocolo orientado à ligação, Send irá bloquear até que todos os bytes do buffer sejam enviados, a menos que tenha sido definido um time-out usando Socket.SendTimeout. Se o valor de time-out for ultrapassado, a Send chamada lançará um SocketException. Em modo não bloqueante, Send pode ser concluído com sucesso mesmo que envie menos do que o número de bytes no buffer. É responsabilidade da sua aplicação acompanhar o número de bytes enviados e tentar novamente a operação até que a aplicação envie os bytes no buffer. Também não há garantia de que os dados que envia apareçam imediatamente na rede. 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 recolhida. A conclusão bem-sucedida do Send método significa que o sistema subjacente teve espaço para armazenar os seus dados para um envio em rede.

Note

Se receber um SocketException, use a SocketException.ErrorCode propriedade para obter o código de erro específico. Depois de obter este código, consulte a documentação do código de erro da API Windows versão 2 dos Sockets para uma descrição detalhada do erro.

Note

A conclusão bem-sucedida de um envio não indica que os dados foram entregues com sucesso. Se não houver espaço de buffer disponível dentro do sistema de transporte para armazenar os dados a transmitir, enviar irá bloquear, a menos que o socket tenha sido colocado em modo não bloqueante.

Note

Esse membro gera informações de rastreamento quando você habilita o rastreamento de rede em seu aplicativo. Para mais informações, consulte Network Tracing in .NET Framework.

Aplica-se a

Send(ReadOnlySpan<Byte>, SocketFlags)

Envia dados para um ligado Socket usando o especificado 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 enviar.

socketFlags
SocketFlags

Uma combinação bit a bit dos valores de enumeração que especifica comportamentos de enviar e receber.

Devoluções

O número de bytes enviados para o Socket.

Exceções

Ocorreu um erro ao tentar aceder ao soquete.

O Socket local foi encerrado.

Ver também

Aplica-se a