Socket.Send Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Envia dados para um conectado Socket.
Sobrecargas
| Nome | Description |
|---|---|
| Send(ReadOnlySpan<Byte>, SocketFlags, SocketError) |
Envia dados para um conectado Socket usando o especificado SocketFlags. |
| Send(ReadOnlySpan<Byte>) |
Envia dados para um conectado Socket. |
| Send(Byte[], Int32, Int32, SocketFlags, SocketError) |
Envia o número especificado de bytes de dados para um 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 Socketusando o .SocketFlags |
| Send(Byte[], Int32, Int32, SocketFlags) |
Envia o número especificado de bytes de dados para um conectado Socket, começando no deslocamento especificado e usando o especificado SocketFlags. |
| Send(Byte[], Int32, SocketFlags) |
Envia o número especificado de bytes de dados para um conectado Socketusando o especificado SocketFlags. |
| Send(IList<ArraySegment<Byte>>) |
Envia o conjunto de buffers na lista para um conectado Socket. |
| Send(IList<ArraySegment<Byte>>, SocketFlags) |
Envia o conjunto de buffers na lista para um conectado Socketusando o .SocketFlags |
| Send(Byte[], SocketFlags) |
Envia dados para um conectado Socket usando o especificado SocketFlags. |
| Send(ReadOnlySpan<Byte>, SocketFlags) |
Envia dados para um conectado Socket usando o especificado SocketFlags. |
| Send(Byte[]) |
Envia dados para um conectado Socket. |
Send(ReadOnlySpan<Byte>, SocketFlags, SocketError)
- Origem:
- Socket.cs
- Origem:
- Socket.cs
- Origem:
- Socket.cs
- Origem:
- Socket.cs
- Origem:
- Socket.cs
Envia dados para um conectado 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 serem enviados.
- socketFlags
- SocketFlags
Uma combinação bit a bit dos valores de enumeração que especifica comportamentos de envio e recebimento.
- errorCode
- SocketError
Quando esse método é retornado, contém um dos valores de enumeração que define códigos de erro para o soquete.
Retornos
O número de bytes enviados para o Socket.
Exceções
Erro ao tentar acessar o soquete.
O Socket foi fechado.
Comentários
Send envia dados de forma síncrona para o host remoto especificado no Connect método ou Accept e retorna o número de bytes enviados com êxito. Send pode ser usado para protocolos orientados à conexão e sem conexão.
Essa sobrecarga requer um buffer que contenha os dados que você deseja enviar. O SocketFlags valor usa como padrão 0, o deslocamento de buffer é padrão como 0 e o número de bytes para enviar padrões para o tamanho do buffer.
Se você estiver usando um protocolo sem conexão, deverá ligar Connect antes de chamar esse método ou Send gerará um SocketException. Se você estiver usando um protocolo orientado à conexão, deverá usar Connect para estabelecer uma conexão de host remoto ou usar Accept para aceitar uma conexão de entrada.
Se você estiver usando um protocolo sem conexão e planeja enviar dados para vários hosts diferentes, use o SendTo método. Se você não usar o SendTo método, precisará ligar Connect antes de cada chamada.Send Você pode usar SendTo mesmo depois de estabelecer um host remoto padrão com Connect. Você também pode alterar o host remoto padrão antes de chamar Send fazendo outra chamada para Connect.
Se você estiver usando um protocolo orientado à conexão, Send bloqueará até que todos os bytes no buffer sejam enviados, a menos que um tempo limite tenha sido definido usando Socket.SendTimeout. Se o valor do tempo limite tiver sido excedido, a Send chamada gerará um SocketException. No modo de não bloqueio, Send pode ser concluído com êxito mesmo que envie menos do que o número de bytes no buffer. É responsabilidade do aplicativo controlar o número de bytes enviados e repetir a operação até que o aplicativo envie os bytes no buffer. Também não há garantia de que os dados enviados serão exibidos na rede imediatamente. Para aumentar a eficiência de rede, o sistema subjacente pode atrasar a transmissão até que uma quantidade significativa de dados de saída seja coletada. Uma conclusão bem-sucedida do Send método significa que o sistema subjacente teve espaço para armazenar em buffer seus dados para um envio de rede.
Observação
Se você receber um SocketException, use a SocketException.ErrorCode propriedade para obter o código de erro específico. Depois de obter esse código, consulte a documentação do código de erro da API do Windows Sockets versão 2 para obter uma descrição detalhada do erro.
Esse membro gera informações de rastreamento quando você habilita o rastreamento de rede em seu aplicativo. Para obter mais informações, consulte Rastreamento de Rede no .NET Framework.
Importante
A conclusão bem-sucedida de um envio não indica que os dados foram entregues com êxito. Se nenhum espaço de buffer estiver disponível no sistema de transporte para manter os dados a serem transmitidos, o envio será bloqueado, a menos que o soquete tenha sido colocado no modo de não bloqueio.
Confira também
- Connect(EndPoint)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SocketFlags
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
Aplica-se a
Send(ReadOnlySpan<Byte>)
- Origem:
- Socket.cs
- Origem:
- Socket.cs
- Origem:
- Socket.cs
- Origem:
- Socket.cs
- Origem:
- Socket.cs
Envia dados para um conectado 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.
Retornos
O número de bytes enviados para o Socket.
Exceções
Erro ao tentar acessar o soquete.
O Socket foi fechado.
Comentários
Send envia dados de forma síncrona para o host remoto especificado no Connect método ou Accept e retorna o número de bytes enviados com êxito. Send pode ser usado para protocolos orientados à conexão e sem conexão.
Essa sobrecarga requer um buffer que contenha os dados que você deseja enviar. O SocketFlags valor usa como padrão 0, o deslocamento de buffer é padrão como 0 e o número de bytes para enviar padrões para o tamanho do buffer.
Se você estiver usando um protocolo sem conexão, deverá ligar Connect antes de chamar esse método ou Send gerará um SocketException. Se você estiver usando um protocolo orientado à conexão, deverá usar Connect para estabelecer uma conexão de host remoto ou usar Accept para aceitar uma conexão de entrada.
Se você estiver usando um protocolo sem conexão e planeja enviar dados para vários hosts diferentes, use o SendTo método. Se você não usar o SendTo método, precisará ligar Connect antes de cada chamada.Send Você pode usar SendTo mesmo depois de estabelecer um host remoto padrão com Connect. Você também pode alterar o host remoto padrão antes de chamar Send fazendo outra chamada para Connect.
Se você estiver usando um protocolo orientado à conexão, Send bloqueará até que todos os bytes no buffer sejam enviados, a menos que um tempo limite tenha sido definido usando Socket.SendTimeout. Se o valor do tempo limite tiver sido excedido, a Send chamada gerará um SocketException. No modo de não bloqueio, Send pode ser concluído com êxito mesmo que envie menos do que o número de bytes no buffer. É responsabilidade do aplicativo controlar o número de bytes enviados e repetir a operação até que o aplicativo envie os bytes no buffer. Também não há garantia de que os dados enviados serão exibidos na rede imediatamente. Para aumentar a eficiência de rede, o sistema subjacente pode atrasar a transmissão até que uma quantidade significativa de dados de saída seja coletada. Uma conclusão bem-sucedida do Send método significa que o sistema subjacente teve espaço para armazenar em buffer seus dados para um envio de rede.
Observação
Se você receber um SocketException, use a SocketException.ErrorCode propriedade para obter o código de erro específico. Depois de obter esse código, consulte a documentação do código de erro da API do Windows Sockets versão 2 para obter uma descrição detalhada do erro.
Esse membro gera informações de rastreamento quando você habilita o rastreamento de rede em seu aplicativo. Para obter mais informações, consulte Rastreamento de Rede no .NET Framework.
Importante
A conclusão bem-sucedida de um envio não indica que os dados foram entregues com êxito. Se nenhum espaço de buffer estiver disponível no sistema de transporte para manter os dados a serem transmitidos, o envio será bloqueado, a menos que o soquete tenha sido colocado no modo de não bloqueio.
Confira também
- Connect(EndPoint)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SocketFlags
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
Aplica-se a
Send(Byte[], Int32, Int32, SocketFlags, SocketError)
- Origem:
- Socket.cs
- Origem:
- Socket.cs
- Origem:
- Socket.cs
- Origem:
- Socket.cs
- Origem:
- Socket.cs
Envia o número especificado de bytes de dados para um 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
- offset
- Int32
A posição no buffer de dados na qual começar a enviar dados.
- size
- Int32
O número de bytes a serem enviados.
- socketFlags
- SocketFlags
Uma combinação bit a bit dos SocketFlags valores.
- errorCode
- SocketError
Um SocketError objeto que armazena o erro do soquete.
Retornos
O número de bytes enviados para o Socket.
Exceções
buffer é null.
offset é menor que 0.
- ou -
offset é maior que o comprimento de buffer.
- ou -
size é menor que 0.
- ou -
size é maior 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 operacional ao acessar o Socket.
O Socket foi fechado.
Exemplos
O exemplo de código a seguir especifica o buffer de dados, um deslocamento, um tamanho e SocketFlags o envio de dados para um conectado Socket.
// Displays sending with a connected socket
// using the overload that takes a buffer, offset, message size, and socket flags.
public static int SendReceiveTest4(Socket server)
{
byte[] msg = Encoding.UTF8.GetBytes("This is a test");
byte[] bytes = new byte[256];
try
{
// Blocks until send returns.
int byteCount = server.Send(msg, 0, msg.Length, SocketFlags.None);
Console.WriteLine("Sent {0} bytes.", byteCount);
// Get reply from the server.
byteCount = server.Receive(bytes, 0, bytes.Length, SocketFlags.None);
if (byteCount > 0)
Console.WriteLine(Encoding.UTF8.GetString(bytes, 0, byteCount));
}
catch (SocketException e)
{
Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode);
return (e.ErrorCode);
}
return 0;
}
' Displays sending with a connected socket
' using the overload that takes a buffer, offset, message size, and socket flags.
Public Shared Function SendReceiveTest4(ByVal server As Socket) As Integer
Dim msg As Byte() = Encoding.UTF8.GetBytes("This is a test")
Dim bytes(255) As Byte
Try
' Blocks until send returns.
Dim byteCount As Integer = server.Send(msg, 0, msg.Length, SocketFlags.None)
Console.WriteLine("Sent {0} bytes.", byteCount)
' Get reply from the server.
byteCount = server.Receive(bytes, 0, server.Available, SocketFlags.None)
If byteCount > 0 Then
Console.WriteLine(Encoding.UTF8.GetString(bytes))
End If
Catch e As SocketException
Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode)
Return e.ErrorCode
End Try
Return 0
End Function 'SendReceiveTest4
Comentários
Send envia dados de forma síncrona para o host remoto especificado no Connect método ou Accept e retorna o número de bytes enviados com êxito. Send pode ser usado para protocolos orientados à conexão e sem conexão.
Nessa sobrecarga, se você especificar o DontRoute sinalizador como o socketflags parâmetro, os dados que você está enviando não serão roteado.
Se você estiver usando um protocolo sem conexão, deverá ligar Connect antes de chamar esse método ou Send gerará um SocketException. Se você estiver usando um protocolo orientado à conexão, deverá usar Connect para estabelecer uma conexão de host remoto ou usar Accept para aceitar uma conexão de entrada.
Se você estiver usando um protocolo sem conexão e planeja enviar dados para vários hosts diferentes, deverá usar SendTo. Se você não usar SendTo, precisará ligar Connect antes de cada chamada para Send. Não há problema em usar SendTo mesmo depois de você ter estabelecido um host remoto padrão com Connect. Você também pode alterar o host remoto padrão antes de chamar Send fazendo outra chamada para Connect.
Você também deve ter certeza de que o tamanho não excede o tamanho máximo do pacote do provedor de serviços subjacente. Se isso acontecer, o datagrama não será enviado e Send gerará um SocketException.
Se você estiver usando um protocolo orientado à conexão, Send bloqueará até que o número solicitado de bytes seja enviado, a menos que um tempo limite tenha sido definido usando Socket.SendTimeout. Se o valor do tempo limite tiver sido excedido, a Send chamada gerará um SocketException. No modo de não desbloqueio, Send pode ser concluído com êxito mesmo que envie menos do que o número de bytes solicitados. É responsabilidade do aplicativo controlar o número de bytes enviados e repetir a operação até que o aplicativo envie o número solicitado de bytes. Também não há nenhuma garantia de que os dados enviados serão exibidos na rede imediatamente. Para aumentar a eficiência de rede, o sistema subjacente pode atrasar a transmissão até que uma quantidade significativa de dados de saída seja coletada. Uma conclusão bem-sucedida do Send método significa que o sistema subjacente teve espaço para armazenar em buffer seus dados para um envio de rede.
Observação
Se você receber um SocketException, use a SocketException.ErrorCode propriedade para obter o código de erro específico. Depois de obter esse código, consulte a documentação do código de erro da API do Windows Sockets versão 2 para obter uma descrição detalhada do erro.
Observação
A conclusão bem-sucedida de um envio não indica que os dados foram entregues com êxito. Se nenhum espaço de buffer estiver disponível no sistema de transporte para manter os dados a serem transmitidos, o envio será bloqueado, a menos que o soquete tenha sido colocado no modo de não bloqueio.
Observação
Esse membro gera informações de rastreamento quando você habilita o rastreamento de rede em seu aplicativo. Para obter mais informações, consulte Rastreamento de Rede no .NET Framework.
Confira também
- Connect(EndPoint)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SocketFlags
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
Aplica-se a
Send(IList<ArraySegment<Byte>>, SocketFlags, SocketError)
- Origem:
- Socket.cs
- Origem:
- Socket.cs
- Origem:
- Socket.cs
- Origem:
- Socket.cs
- Origem:
- Socket.cs
Envia o conjunto de buffers na lista para um conectado Socketusando o .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 serem enviados.
- socketFlags
- SocketFlags
Uma combinação bit a bit dos SocketFlags valores.
- errorCode
- SocketError
Um SocketError objeto que armazena o erro do soquete.
Retornos
O número de bytes enviados para o Socket.
Exceções
buffers é null.
buffers está vazio.
Erro ao tentar acessar o soquete.
O Socket foi fechado.
Comentários
Essa sobrecarga requer pelo menos um buffer que contenha os dados que você deseja enviar. O SocketFlags valor é padrão como 0. Se você especificar o DontRoute sinalizador como o socketFlags parâmetro, os dados que você está enviando não serão roteado.
Se você estiver usando um protocolo sem conexão, deverá ligar Connect antes de chamar esse método ou Send gerará um SocketException. Se você estiver usando um protocolo orientado à conexão, deverá usar Connect para estabelecer uma conexão de host remoto ou usar Accept para aceitar uma conexão de entrada.
Se você estiver usando um protocolo sem conexão e planeja enviar dados para vários hosts diferentes, deverá usar o SendTo método. Se você não usar o SendTo método, precisará ligar Connect antes de cada chamada para Send. Você pode usar SendTo mesmo depois de estabelecer um host remoto padrão com Connect. Você também pode alterar o host remoto padrão antes de chamar Send fazendo outra chamada para Connect.
Se você estiver usando um protocolo orientado à conexão, Send bloqueará até que todos os bytes no buffer sejam enviados, a menos que um tempo limite tenha sido definido usando Socket.SendTimeout. Se o valor do tempo limite tiver sido excedido, a Send chamada gerará um SocketException. No modo de não bloqueio, Send pode ser concluído com êxito mesmo que envie menos do que o número de bytes no buffer. É responsabilidade do aplicativo controlar o número de bytes enviados e repetir a operação até que o aplicativo envie os bytes no buffer. Também não há nenhuma garantia de que os dados enviados serão exibidos na rede imediatamente. Para aumentar a eficiência de rede, o sistema subjacente pode atrasar a transmissão até que uma quantidade significativa de dados de saída seja coletada. Uma conclusão bem-sucedida do Send método significa que o sistema subjacente teve espaço para armazenar em buffer seus dados para um envio de rede.
Observação
Se você receber um SocketException, use a SocketException.ErrorCode propriedade para obter o código de erro específico. Depois de obter esse código, consulte a documentação do código de erro da API do Windows Sockets versão 2 para obter uma descrição detalhada do erro.
Observação
A conclusão bem-sucedida de um envio não indica que os dados foram entregues com êxito. Se nenhum espaço de buffer estiver disponível no sistema de transporte para manter os dados a serem transmitidos, o envio será bloqueado, a menos que o soquete tenha sido colocado no modo de não bloqueio.
Observação
Esse membro gera informações de rastreamento quando você habilita o rastreamento de rede em seu aplicativo. Para obter mais informações, consulte Rastreamento de Rede no .NET Framework.
Aplica-se a
Send(Byte[], Int32, Int32, SocketFlags)
- Origem:
- Socket.cs
- Origem:
- Socket.cs
- Origem:
- Socket.cs
- Origem:
- Socket.cs
- Origem:
- Socket.cs
Envia o número especificado de bytes de dados para um 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
- offset
- Int32
A posição no buffer de dados na qual começar a enviar dados.
- size
- Int32
O número de bytes a serem enviados.
- socketFlags
- SocketFlags
Uma combinação bit a bit dos SocketFlags valores.
Retornos
O número de bytes enviados para o Socket.
Exceções
buffer é null.
offset é menor que 0.
- ou -
offset é maior que o comprimento de buffer.
- ou -
size é menor que 0.
- ou -
size é maior 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 operacional ao acessar o Socket.
O Socket foi fechado.
Exemplos
O exemplo de código a seguir especifica o buffer de dados, um deslocamento, um tamanho e SocketFlags o envio de dados para um conectado Socket.
// Displays sending with a connected socket
// using the overload that takes a buffer, offset, message size, and socket flags.
public static int SendReceiveTest4(Socket server)
{
byte[] msg = Encoding.UTF8.GetBytes("This is a test");
byte[] bytes = new byte[256];
try
{
// Blocks until send returns.
int byteCount = server.Send(msg, 0, msg.Length, SocketFlags.None);
Console.WriteLine("Sent {0} bytes.", byteCount);
// Get reply from the server.
byteCount = server.Receive(bytes, 0, bytes.Length, SocketFlags.None);
if (byteCount > 0)
Console.WriteLine(Encoding.UTF8.GetString(bytes, 0, byteCount));
}
catch (SocketException e)
{
Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode);
return (e.ErrorCode);
}
return 0;
}
' Displays sending with a connected socket
' using the overload that takes a buffer, offset, message size, and socket flags.
Public Shared Function SendReceiveTest4(ByVal server As Socket) As Integer
Dim msg As Byte() = Encoding.UTF8.GetBytes("This is a test")
Dim bytes(255) As Byte
Try
' Blocks until send returns.
Dim byteCount As Integer = server.Send(msg, 0, msg.Length, SocketFlags.None)
Console.WriteLine("Sent {0} bytes.", byteCount)
' Get reply from the server.
byteCount = server.Receive(bytes, 0, server.Available, SocketFlags.None)
If byteCount > 0 Then
Console.WriteLine(Encoding.UTF8.GetString(bytes))
End If
Catch e As SocketException
Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode)
Return e.ErrorCode
End Try
Return 0
End Function 'SendReceiveTest4
Comentários
Send envia dados de forma síncrona para o host remoto especificado no Connect método ou Accept e retorna o número de bytes enviados com êxito. Send pode ser usado para protocolos orientados à conexão e sem conexão.
Nessa sobrecarga, se você especificar o DontRoute sinalizador como o socketflags parâmetro, os dados que você está enviando não serão roteado.
Se você estiver usando um protocolo sem conexão, deverá ligar Connect antes de chamar esse método ou Send gerará um SocketException. Se você estiver usando um protocolo orientado à conexão, deverá usar Connect para estabelecer uma conexão de host remoto ou usar Accept para aceitar uma conexão de entrada.
Se você estiver usando um protocolo sem conexão e planeja enviar dados para vários hosts diferentes, deverá usar SendTo. Se você não usar SendTo, precisará ligar Connect antes de cada chamada para Send. Não há problema em usar SendTo mesmo depois de você ter estabelecido um host remoto padrão com Connect. Você também pode alterar o host remoto padrão antes de chamar Send fazendo outra chamada para Connect.
Você também deve ter certeza de que o tamanho não excede o tamanho máximo do pacote do provedor de serviços subjacente. Se isso acontecer, o datagrama não será enviado e Send gerará um SocketException.
Se você estiver usando um protocolo orientado à conexão, Send bloqueará até que o número solicitado de bytes seja enviado, a menos que um tempo limite tenha sido definido usando Socket.SendTimeout. Se o valor do tempo limite tiver sido excedido, a Send chamada gerará um SocketException. No modo de não desbloqueio, Send pode ser concluído com êxito mesmo que envie menos do que o número de bytes solicitados. É responsabilidade do aplicativo controlar o número de bytes enviados e repetir a operação até que o aplicativo envie o número solicitado de bytes. Também não há nenhuma garantia de que os dados enviados serão exibidos na rede imediatamente. Para aumentar a eficiência de rede, o sistema subjacente pode atrasar a transmissão até que uma quantidade significativa de dados de saída seja coletada. Uma conclusão bem-sucedida do Send método significa que o sistema subjacente teve espaço para armazenar em buffer seus dados para um envio de rede.
Observação
Se você receber um SocketException, use a SocketException.ErrorCode propriedade para obter o código de erro específico. Depois de obter esse código, consulte a documentação do código de erro da API do Windows Sockets versão 2 para obter uma descrição detalhada do erro.
Observação
A conclusão bem-sucedida de um envio não indica que os dados foram entregues com êxito. Se nenhum espaço de buffer estiver disponível no sistema de transporte para manter os dados a serem transmitidos, o envio será bloqueado, a menos que o soquete tenha sido colocado no modo de não bloqueio.
Observação
Esse membro gera informações de rastreamento quando você habilita o rastreamento de rede em seu aplicativo. Para obter mais informações, consulte Rastreamento de Rede no .NET Framework.
Confira também
- Connect(EndPoint)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SocketFlags
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
Aplica-se a
Send(Byte[], Int32, SocketFlags)
- Origem:
- Socket.cs
- Origem:
- Socket.cs
- Origem:
- Socket.cs
- Origem:
- Socket.cs
- Origem:
- Socket.cs
Envia o número especificado de bytes de dados para um conectado Socketusando 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
- size
- Int32
O número de bytes a serem enviados.
- socketFlags
- SocketFlags
Uma combinação bit a bit dos SocketFlags valores.
Retornos
O número de bytes enviados para o Socket.
Exceções
buffer é null.
size é menor que 0 ou excede o tamanho do buffer.
socketFlags não é uma combinação válida de valores.
- ou -
Ocorre um erro do sistema operacional ao acessar o soquete.
O Socket foi fechado.
Exemplos
O exemplo de código a seguir envia os dados encontrados no buffer e especifica None para SocketFlags.
// Displays sending with a connected socket
// using the overload that takes a buffer, message size, and socket flags.
public static int SendReceiveTest3(Socket server)
{
byte[] msg = Encoding.UTF8.GetBytes("This is a test");
byte[] bytes = new byte[256];
try
{
// Blocks until send returns.
int i = server.Send(msg, msg.Length, SocketFlags.None);
Console.WriteLine("Sent {0} bytes.", i);
// Get reply from the server.
int byteCount = server.Receive(bytes, bytes.Length, SocketFlags.None);
if (byteCount > 0)
Console.WriteLine(Encoding.UTF8.GetString(bytes, 0, byteCount));
}
catch (SocketException e)
{
Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode);
return (e.ErrorCode);
}
return 0;
}
' Displays sending with a connected socket
' using the overload that takes a buffer, message size, and socket flags.
Public Shared Function SendReceiveTest3(ByVal server As Socket) As Integer
Dim msg As Byte() = Encoding.UTF8.GetBytes("This is a test")
Dim bytes(255) As Byte
Try
' Blocks until send returns.
Dim i As Integer = server.Send(msg, msg.Length, SocketFlags.None)
Console.WriteLine("Sent {0} bytes.", i)
' Get reply from the server.
Dim byteCount As Integer = server.Receive(bytes, server.Available, SocketFlags.None)
If byteCount > 0 Then
Console.WriteLine(Encoding.UTF8.GetString(bytes))
End If
Catch e As SocketException
Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode)
Return e.ErrorCode
End Try
Return 0
End Function 'SendReceiveTest3
Comentários
Send envia dados de forma síncrona para o host remoto estabelecido no Connect método ou Accept e retorna o número de bytes enviados com êxito. Send pode ser usado para protocolos orientados à conexão e sem conexão.
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 bit a bit de qualquer SocketFlags. Se você especificar o DontRoute sinalizador como o socketflags parâmetro, os dados que você está enviando não serão roteado.
Se você estiver usando um protocolo sem conexão, deverá ligar Connect antes de chamar esse método ou Send gerará um SocketException. Se você estiver usando um protocolo orientado à conexão, deverá usar Connect para estabelecer uma conexão de host remoto ou usar Accept para aceitar uma conexão de entrada.
Se você estiver usando um protocolo sem conexão e planeja enviar dados para vários hosts diferentes, use o SendTo método. Se você não usar o SendTo método, precisará chamar o Connect método antes de cada chamada para o Send método. Você pode usar SendTo mesmo depois de estabelecer um host remoto padrão com Connect. Você também pode alterar o host remoto padrão antes de chamar Send fazendo outra chamada para Connect.
Com um protocolo orientado à conexão, Send será bloqueado até que o número solicitado de bytes seja enviado, a menos que um tempo limite tenha sido definido usando Socket.SendTimeout. Se o valor do tempo limite tiver sido excedido, a Send chamada gerará um SocketException. No modo de não desbloqueio, Send pode ser concluído com êxito mesmo que envie menos do que o número de bytes solicitados. É responsabilidade do aplicativo controlar o número de bytes enviados e repetir a operação até que o aplicativo envie o número solicitado de bytes. Também não há nenhuma garantia de que os dados enviados serão exibidos na rede imediatamente. Para aumentar a eficiência de rede, o sistema subjacente pode atrasar a transmissão até que uma quantidade significativa de dados de saída seja coletada. Uma conclusão bem-sucedida do Send método significa que o sistema subjacente teve espaço para armazenar em buffer seus dados para um envio de rede.
Observação
Você deve garantir que o tamanho não exceda o tamanho máximo do pacote do provedor de serviços subjacente. Se isso acontecer, o datagram não será enviado e Send gerará um SocketException. Se você receber um SocketException, use a SocketException.ErrorCode propriedade para obter o código de erro específico. Depois de obter esse código, consulte a documentação do código de erro da API do Windows Sockets versão 2 para obter uma descrição detalhada do erro.
Esse membro gera informações de rastreamento quando você habilita o rastreamento de rede em seu aplicativo. Para obter mais informações, consulte Rastreamento de Rede no .NET Framework.
Importante
A conclusão bem-sucedida de um envio não indica que os dados foram entregues com êxito. Se nenhum espaço de buffer estiver disponível no sistema de transporte para manter os dados a serem transmitidos, o envio será bloqueado, a menos que o soquete tenha sido colocado no modo de não bloqueio.
Confira também
- Connect(EndPoint)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SocketFlags
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
Aplica-se a
Send(IList<ArraySegment<Byte>>)
- Origem:
- Socket.cs
- Origem:
- Socket.cs
- Origem:
- Socket.cs
- Origem:
- Socket.cs
- Origem:
- Socket.cs
Envia o conjunto de buffers na lista para um conectado 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.
Retornos
O número de bytes enviados para o Socket.
Exceções
buffers é null.
buffers está vazio.
Erro ao tentar acessar o soquete. Consulte a seção comentários abaixo.
O Socket foi fechado.
Comentários
Send pode ser usado para protocolos orientados à conexão e sem conexão.
Essa sobrecarga requer pelo menos um buffer que contenha os dados que você deseja enviar.
Se você estiver usando um protocolo sem conexão, deverá ligar Connect antes de chamar esse método ou Send gerará um SocketException. Se você estiver usando um protocolo orientado à conexão, deverá usar Connect para estabelecer uma conexão de host remoto ou usar Accept para aceitar uma conexão de entrada.
Se você estiver usando um protocolo sem conexão e planeja enviar dados para vários hosts diferentes, deverá usar o SendTo método. Se você não usar o SendTo método, precisará ligar Connect antes de cada chamada para Send. Você pode usar SendTo mesmo depois de estabelecer um host remoto padrão com Connect. Você também pode alterar o host remoto padrão antes de chamar Send fazendo outra chamada para Connect.
Se você estiver usando um protocolo orientado à conexão, Send bloqueará até que todos os bytes no buffer sejam enviados, a menos que um tempo limite tenha sido definido usando Socket.SendTimeout. Se o valor do tempo limite tiver sido excedido, a Send chamada gerará um SocketException. No modo de não bloqueio, Send pode ser concluído com êxito mesmo que envie menos do que o número de bytes no buffer. É responsabilidade do aplicativo controlar o número de bytes enviados e repetir a operação até que o aplicativo envie os bytes no buffer. Também não há nenhuma garantia de que os dados enviados serão exibidos na rede imediatamente. Para aumentar a eficiência de rede, o sistema subjacente pode atrasar a transmissão até que uma quantidade significativa de dados de saída seja coletada. Uma conclusão bem-sucedida do Send método significa que o sistema subjacente teve espaço para armazenar em buffer seus dados para um envio de rede.
Observação
Se você receber um SocketException, use a SocketException.ErrorCode propriedade para obter o código de erro específico. Depois de obter esse código, consulte a documentação do código de erro da API do Windows Sockets versão 2 para obter uma descrição detalhada do erro.
Observação
A conclusão bem-sucedida de um envio não indica que os dados foram entregues com êxito. Se nenhum espaço de buffer estiver disponível no sistema de transporte para manter os dados a serem transmitidos, o envio será bloqueado, a menos que o soquete tenha sido colocado no modo de não bloqueio.
Observação
Esse membro gera informações de rastreamento quando você habilita o rastreamento de rede em seu aplicativo. Para obter mais informações, consulte Rastreamento de Rede no .NET Framework.
Aplica-se a
Send(IList<ArraySegment<Byte>>, SocketFlags)
- Origem:
- Socket.cs
- Origem:
- Socket.cs
- Origem:
- Socket.cs
- Origem:
- Socket.cs
- Origem:
- Socket.cs
Envia o conjunto de buffers na lista para um conectado Socketusando o .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.
- socketFlags
- SocketFlags
Uma combinação bit a bit dos SocketFlags valores.
Retornos
O número de bytes enviados para o Socket.
Exceções
buffers é null.
buffers está vazio.
Erro ao tentar acessar o soquete.
O Socket foi fechado.
Comentários
Essa sobrecarga requer pelo menos um buffer que contenha os dados que você deseja enviar. O SocketFlags valor é padrão como 0. Se você especificar o DontRoute sinalizador como o socketFlags parâmetro, os dados que você está enviando não serão roteado.
Se você estiver usando um protocolo sem conexão, deverá ligar Connect antes de chamar esse método ou Send gerará um SocketException. Se você estiver usando um protocolo orientado à conexão, deverá usar Connect para estabelecer uma conexão de host remoto ou usar Accept para aceitar uma conexão de entrada.
Se você estiver usando um protocolo sem conexão e planeja enviar dados para vários hosts diferentes, deverá usar o SendTo método. Se você não usar o SendTo método, precisará ligar Connect antes de cada chamada para Send. Você pode usar SendTo mesmo depois de estabelecer um host remoto padrão com Connect. Você também pode alterar o host remoto padrão antes de chamar Send fazendo outra chamada para Connect.
Se você estiver usando um protocolo orientado à conexão, Send bloqueará até que todos os bytes no buffer sejam enviados, a menos que um tempo limite tenha sido definido usando Socket.SendTimeout. Se o valor do tempo limite tiver sido excedido, a Send chamada gerará um SocketException. No modo de não bloqueio, Send pode ser concluído com êxito mesmo que envie menos do que o número de bytes no buffer. É responsabilidade do aplicativo controlar o número de bytes enviados e repetir a operação até que o aplicativo envie os bytes no buffer. Também não há nenhuma garantia de que os dados enviados serão exibidos na rede imediatamente. Para aumentar a eficiência de rede, o sistema subjacente pode atrasar a transmissão até que uma quantidade significativa de dados de saída seja coletada. Uma conclusão bem-sucedida do Send método significa que o sistema subjacente teve espaço para armazenar em buffer seus dados para um envio de rede.
Observação
Se você receber um SocketException, use a SocketException.ErrorCode propriedade para obter o código de erro específico. Depois de obter esse código, consulte a documentação do código de erro da API do Windows Sockets versão 2 para obter uma descrição detalhada do erro.
Observação
A conclusão bem-sucedida de um envio não indica que os dados foram entregues com êxito. Se nenhum espaço de buffer estiver disponível no sistema de transporte para manter os dados a serem transmitidos, o envio será bloqueado, a menos que o soquete tenha sido colocado no modo de não bloqueio.
Observação
Esse membro gera informações de rastreamento quando você habilita o rastreamento de rede em seu aplicativo. Para obter mais informações, consulte Rastreamento de Rede no .NET Framework.
Aplica-se a
Send(Byte[], SocketFlags)
- Origem:
- Socket.cs
- Origem:
- Socket.cs
- Origem:
- Socket.cs
- Origem:
- Socket.cs
- Origem:
- Socket.cs
Envia dados para um conectado 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
- socketFlags
- SocketFlags
Uma combinação bit a bit dos SocketFlags valores.
Retornos
O número de bytes enviados para o Socket.
Exceções
buffer é null.
Erro ao tentar acessar o soquete.
O Socket foi fechado.
Exemplos
O exemplo de código a seguir demonstra o envio de dados em um conectado Socket.
// Displays sending with a connected socket
// using the overload that takes a buffer and socket flags.
public static int SendReceiveTest2(Socket server)
{
byte[] msg = Encoding.UTF8.GetBytes("This is a test");
byte[] bytes = new byte[256];
try
{
// Blocks until send returns.
int byteCount = server.Send(msg, SocketFlags.None);
Console.WriteLine("Sent {0} bytes.", byteCount);
// Get reply from the server.
byteCount = server.Receive(bytes, SocketFlags.None);
if (byteCount > 0)
Console.WriteLine(Encoding.UTF8.GetString(bytes));
}
catch (SocketException e)
{
Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode);
return (e.ErrorCode);
}
return 0;
}
' Displays sending with a connected socket
' using the overload that takes a buffer and socket flags.
Public Shared Function SendReceiveTest2(ByVal server As Socket) As Integer
Dim msg As Byte() = Encoding.UTF8.GetBytes("This is a test")
Dim bytes(255) As Byte
Try
' Blocks until send returns.
Dim byteCount As Integer = server.Send(msg, SocketFlags.None)
Console.WriteLine("Sent {0} bytes.", byteCount)
' Get reply from the server.
byteCount = server.Receive(bytes, SocketFlags.None)
If byteCount > 0 Then
Console.WriteLine(Encoding.UTF8.GetString(bytes))
End If
Catch e As SocketException
Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode)
Return e.ErrorCode
End Try
Return 0
End Function 'SendReceiveTest2
Comentários
Send envia dados de forma síncrona para o host remoto estabelecido no Connect método ou Accept e retorna o número de bytes enviados com êxito. O Send método pode ser usado para protocolos orientados à conexão e sem conexão.
Essa sobrecarga requer um buffer que contenha os dados que você deseja enviar e uma combinação bit a bit de SocketFlags. O deslocamento de buffer usa como padrão 0 e o número de bytes para enviar padrões para o tamanho do buffer. Se você especificar o DontRoute sinalizador como o valor do socketflags parâmetro, os dados que você está enviando não serão roteado.
Se você estiver usando um protocolo sem conexão, deverá ligar Connect antes de chamar esse método ou Send gerará um SocketException. Se você estiver usando um protocolo orientado à conexão, deverá usar Connect para estabelecer uma conexão de host remoto ou usar Accept para aceitar uma conexão de entrada.
Se você estiver usando um protocolo sem conexão e planeja enviar dados para vários hosts diferentes, deverá usar o SendTo método. Se você não usar o SendTo método, precisará chamar o Connect método antes de cada chamada.Send Você pode usar SendTo mesmo depois de estabelecer um host remoto padrão com Connect. Você também pode alterar o host remoto padrão antes de chamar Send fazendo outra chamada para Connect.
Se você estiver usando um protocolo orientado à conexão, Send bloqueará até que todos os bytes no buffer sejam enviados, a menos que um tempo limite tenha sido definido usando Socket.SendTimeout. Se o valor do tempo limite tiver sido excedido, a Send chamada gerará um SocketException. No modo de não bloqueio, Send pode ser concluído com êxito mesmo que envie menos do que o número de bytes no buffer. É responsabilidade do aplicativo controlar o número de bytes enviados e repetir a operação até que o aplicativo envie o número solicitado de bytes. Também não há nenhuma garantia de que os dados enviados serão exibidos na rede imediatamente. Para aumentar a eficiência de rede, o sistema subjacente pode atrasar a transmissão até que uma quantidade significativa de dados de saída seja coletada. Uma conclusão bem-sucedida do Send método significa que o sistema subjacente teve espaço para armazenar em buffer seus dados para um envio de rede.
Observação
Você deve garantir que o tamanho do buffer não exceda o tamanho máximo do pacote do provedor de serviços subjacente. Se isso acontecer, o datagrama não será enviado e Send gerará um SocketException. Se você receber um SocketException, use a SocketException.ErrorCode propriedade para obter o código de erro específico. Depois de obter esse código, consulte a documentação do código de erro da API do Windows Sockets versão 2 para obter uma descrição detalhada do erro.
Observação
A conclusão bem-sucedida de um envio não indica que os dados foram entregues com êxito. Se nenhum espaço de buffer estiver disponível no sistema de transporte para manter os dados a serem transmitidos, o envio será bloqueado, a menos que o soquete tenha sido colocado no modo de não bloqueio.
Observação
Esse membro gera informações de rastreamento quando você habilita o rastreamento de rede em seu aplicativo. Para obter mais informações, consulte Rastreamento de Rede no .NET Framework.
Confira também
- Connect(EndPoint)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SocketFlags
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
Aplica-se a
Send(ReadOnlySpan<Byte>, SocketFlags)
- Origem:
- Socket.cs
- Origem:
- Socket.cs
- Origem:
- Socket.cs
- Origem:
- Socket.cs
- Origem:
- Socket.cs
Envia dados para um conectado 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 serem enviados.
- socketFlags
- SocketFlags
Uma combinação bit a bit dos valores de enumeração que especifica comportamentos de envio e recebimento.
Retornos
O número de bytes enviados para o Socket.
Exceções
Erro ao tentar acessar o soquete.
O Socket foi fechado.
Confira também
- Connect(EndPoint)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SocketFlags
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
Aplica-se a
Send(Byte[])
- Origem:
- Socket.cs
- Origem:
- Socket.cs
- Origem:
- Socket.cs
- Origem:
- Socket.cs
- Origem:
- Socket.cs
Envia dados para um conectado 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
Retornos
O número de bytes enviados para o Socket.
Exceções
buffer é null.
Erro ao tentar acessar o soquete.
O Socket foi fechado.
Exemplos
O exemplo de código a seguir demonstra o envio de dados em um conectado Socket.
// Displays sending with a connected socket
// using the overload that takes a buffer.
public static int SendReceiveTest1(Socket server)
{
byte[] msg = Encoding.UTF8.GetBytes("This is a test");
byte[] bytes = new byte[256];
try
{
// Blocks until send returns.
int i = server.Send(msg);
Console.WriteLine("Sent {0} bytes.", i);
// Get reply from the server.
i = server.Receive(bytes);
Console.WriteLine(Encoding.UTF8.GetString(bytes));
}
catch (SocketException e)
{
Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode);
return (e.ErrorCode);
}
return 0;
}
' Displays sending with a connected socket
' using the overload that takes a buffer.
Public Shared Function SendReceiveTest1(ByVal server As Socket) As Integer
Dim msg As Byte() = Encoding.UTF8.GetBytes("This is a test")
Dim bytes(255) As Byte
Try
' Blocks until send returns.
Dim i As Integer = server.Send(msg)
Console.WriteLine("Sent {0} bytes.", i)
' Get reply from the server.
i = server.Receive(bytes)
Console.WriteLine(Encoding.UTF8.GetString(bytes))
Catch e As SocketException
Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode)
Return e.ErrorCode
End Try
Return 0
End Function 'SendReceiveTest1
Comentários
Send envia dados de forma síncrona para o host remoto especificado no Connect método ou Accept e retorna o número de bytes enviados com êxito. Send pode ser usado para protocolos orientados à conexão e sem conexão.
Essa sobrecarga requer um buffer que contenha os dados que você deseja enviar. O SocketFlags valor usa como padrão 0, o deslocamento de buffer é padrão como 0 e o número de bytes para enviar padrões para o tamanho do buffer.
Se você estiver usando um protocolo sem conexão, deverá ligar Connect antes de chamar esse método ou Send gerará um SocketException. Se você estiver usando um protocolo orientado à conexão, deverá usar Connect para estabelecer uma conexão de host remoto ou usar Accept para aceitar uma conexão de entrada.
Se você estiver usando um protocolo sem conexão e planeja enviar dados para vários hosts diferentes, deverá usar o SendTo método. Se você não usar o SendTo método, precisará ligar Connect antes de cada chamada para Send. Você pode usar SendTo mesmo depois de estabelecer um host remoto padrão com Connect. Você também pode alterar o host remoto padrão antes de chamar Send fazendo outra chamada para Connect.
Se você estiver usando um protocolo orientado à conexão, Send bloqueará até que todos os bytes no buffer sejam enviados, a menos que um tempo limite tenha sido definido usando Socket.SendTimeout. Se o valor do tempo limite tiver sido excedido, a Send chamada gerará um SocketException. No modo de não bloqueio, Send pode ser concluído com êxito mesmo que envie menos do que o número de bytes no buffer. É responsabilidade do aplicativo controlar o número de bytes enviados e repetir a operação até que o aplicativo envie os bytes no buffer. Também não há nenhuma garantia de que os dados enviados serão exibidos na rede imediatamente. Para aumentar a eficiência de rede, o sistema subjacente pode atrasar a transmissão até que uma quantidade significativa de dados de saída seja coletada. Uma conclusão bem-sucedida do Send método significa que o sistema subjacente teve espaço para armazenar em buffer seus dados para um envio de rede.
Observação
Se você receber um SocketException, use a SocketException.ErrorCode propriedade para obter o código de erro específico. Depois de obter esse código, consulte a documentação do código de erro da API do Windows Sockets versão 2 para obter uma descrição detalhada do erro.
Observação
A conclusão bem-sucedida de um envio não indica que os dados foram entregues com êxito. Se nenhum espaço de buffer estiver disponível no sistema de transporte para manter os dados a serem transmitidos, o envio será bloqueado, a menos que o soquete tenha sido colocado no modo de não bloqueio.
Observação
Esse membro gera informações de rastreamento quando você habilita o rastreamento de rede em seu aplicativo. Para obter mais informações, consulte Rastreamento de Rede no .NET Framework.
Confira também
- Connect(EndPoint)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SocketFlags
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)