Socket Classe

Definição

Implementa a interface de soquetes Berkeley.

public ref class Socket : IDisposable
public class Socket : IDisposable
type Socket = class
    interface IDisposable
Public Class Socket
Implements IDisposable
Herança
Socket
Implementações

Exemplos

O exemplo seguinte mostra como a Socket classe pode ser usada para enviar dados para um servidor HTTP, imprimindo a resposta ASCII à saída padrão. Este exemplo bloqueia a thread que chama até que toda a página seja recebida.

private static void SendHttpRequest(Uri? uri = null, int port = 80)
{
    uri ??= new Uri("http://example.com");

    // Construct a minimalistic HTTP/1.1 request
    byte[] requestBytes = Encoding.ASCII.GetBytes(@$"GET {uri.AbsoluteUri} HTTP/1.0
Host: {uri.Host}
Connection: Close

");

    // Create and connect a dual-stack socket
    using Socket socket = new Socket(SocketType.Stream, ProtocolType.Tcp);
    socket.Connect(uri.Host, port);

    // Send the request.
    // For the tiny amount of data in this example, the first call to Send() will likely deliver the buffer completely,
    // however this is not guaranteed to happen for larger real-life buffers.
    // The best practice is to iterate until all the data is sent.
    int bytesSent = 0;
    while (bytesSent < requestBytes.Length)
    {
        bytesSent += socket.Send(requestBytes, bytesSent, requestBytes.Length - bytesSent, SocketFlags.None);
    }

    // Do minimalistic buffering assuming ASCII response
    byte[] responseBytes = new byte[256];
    char[] responseChars = new char[256];

    while (true)
    {
        int bytesReceived = socket.Receive(responseBytes);

        // Receiving 0 bytes means EOF has been reached
        if (bytesReceived == 0) break;

        // Convert byteCount bytes to ASCII characters using the 'responseChars' buffer as destination
        int charCount = Encoding.ASCII.GetChars(responseBytes, 0, bytesReceived, responseChars, 0);

        // Print the contents of the 'responseChars' buffer to Console.Out
        Console.Out.Write(responseChars, 0, charCount);
    }
}

O exemplo seguinte demonstra o mesmo cenário HTTP GET, usando APIs assíncronas baseadas em tarefas, enquanto também encaminha a CancellationToken para os métodos assíncronos, tornando toda a operação cancelável.

Sugestão

Socketos métodos assíncronos que não tomam um CancellationToken normalmente retornam um Task, que é alocado no heap. Sobrecargas canceláveis estão sempre ValueTaska regressar; utilizá-las ajuda a reduzir alocações em código de alto desempenho.

private static async Task SendHttpRequestAsync(Uri? uri = null, int port = 80, CancellationToken cancellationToken = default)
{
    uri ??= new Uri("http://example.com");

    // Construct a minimalistic HTTP/1.1 request
    byte[] requestBytes = Encoding.ASCII.GetBytes(@$"GET {uri.AbsoluteUri} HTTP/1.1
Host: {uri.Host}
Connection: Close

");

    // Create and connect a dual-stack socket
    using Socket socket = new Socket(SocketType.Stream, ProtocolType.Tcp);
    await socket.ConnectAsync(uri.Host, port, cancellationToken);

    // Send the request.
    // For the tiny amount of data in this example, the first call to SendAsync() will likely deliver the buffer completely,
    // however this is not guaranteed to happen for larger real-life buffers.
    // The best practice is to iterate until all the data is sent.
    int bytesSent = 0;
    while (bytesSent < requestBytes.Length)
    {
        bytesSent += await socket.SendAsync(requestBytes.AsMemory(bytesSent), SocketFlags.None);
    }

    // Do minimalistic buffering assuming ASCII response
    byte[] responseBytes = new byte[256];
    char[] responseChars = new char[256];

    while (true)
    {
        int bytesReceived = await socket.ReceiveAsync(responseBytes, SocketFlags.None, cancellationToken);

        // Receiving 0 bytes means EOF has been reached
        if (bytesReceived == 0) break;

        // Convert byteCount bytes to ASCII characters using the 'responseChars' buffer as destination
        int charCount = Encoding.ASCII.GetChars(responseBytes, 0, bytesReceived, responseChars, 0);

        // Print the contents of the 'responseChars' buffer to Console.Out
        await Console.Out.WriteAsync(responseChars.AsMemory(0, charCount), cancellationToken);
    }
}

Observações

Para mais informações sobre esta API, consulte Observações Suplementares da API para o Socket.

Construtores

Name Description
Socket(AddressFamily, SocketType, ProtocolType)

Inicializa uma nova instância da Socket classe usando a família de endereços, tipo de socket e protocolo especificados.

Socket(SocketInformation)

Inicializa uma nova instância da Socket classe usando o valor especificado devolvido de DuplicateAndClose(Int32).

Socket(SocketType, ProtocolType)

Inicializa uma nova instância da Socket classe usando o tipo de socket e protocolo especificados. Se o sistema operativo suportar IPv6, este construtor cria um soquete de modo duplo; caso contrário, cria um soquete IPv4.

Propriedades

Name Description
AddressFamily

Obtém a família de endereços do Socket.

Available

Obtém a quantidade de dados recebida da rede e que está disponível para leitura.

Blocking

Recebe ou define um valor que indica se o Socket está em modo de bloqueio.

Connected

Obtém um valor que indica se a Socket está ligado a um host remoto na última Send operação.Receive

DontFragment

Recebe ou define um valor que especifica se permite Socket que datagramas de Protocolo de Internet (IP) sejam fragmentados.

DualMode

Recebe ou define um valor que especifica se o Socket é um socket de modo duplo usado tanto para IPv4 como para IPv6.

EnableBroadcast

Recebe ou define um Boolean valor que especifica se pode Socket enviar pacotes de broadcast.

ExclusiveAddressUse

Recebe ou define um valor que indica se permite Socket que apenas um processo se ligue a uma porta.

Handle

Faz com que o sistema operativo seja controlado para o Socket.

IsBound

Obtém um valor que indica se está Socket vinculado a uma porta local específica.

LingerState

Recebe ou define um valor que especifica se irá Socket atrasar o encerramento de um socket numa tentativa de enviar todos os dados pendentes.

LocalEndPoint

Obtém o endpoint local.

MulticastLoopback

Recebe ou define um valor que especifica se os pacotes multicast de saída são entregues à aplicação emissora.

NoDelay

Recebe ou define um Boolean valor que especifica se o fluxo Socket está a usar o algoritmo de Nagle.

OSSupportsIPv4

Indica se o sistema operativo subjacente e os adaptadores de rede suportam o Protocolo de Internet versão 4 (IPv4).

OSSupportsIPv6

Indica se o sistema operativo subjacente e os adaptadores de rede suportam o Protocolo de Internet versão 6 (IPv6).

ProtocolType

Obtém o tipo de protocolo do Socket.

ReceiveBufferSize

Obtém ou define um valor que especifica o tamanho do buffer de receção do Socket.

ReceiveTimeout

Recebe ou define um valor que especifica o tempo após o qual uma chamada síncrona Receive irá expirar.

RemoteEndPoint

Fica com o endpoint remoto.

SendBufferSize

Obtém ou define um valor que especifica o tamanho do buffer de envio do Socket.

SendTimeout

Recebe ou define um valor que especifica o tempo após o qual uma chamada síncrona Send irá expirar.

SocketType

Obtém o tipo do Socket.

SupportsIPv4
Obsoleto.
Obsoleto.

Recebe um valor que indica se o suporte IPv4 está disponível e ativado no host atual.

SupportsIPv6
Obsoleto.
Obsoleto.

Recebe um valor que indica se o Framework suporta IPv6 para certos membros obsoletos Dns .

Ttl

Recebe ou define um valor que especifica o valor Time To Live (TTL) dos pacotes de Protocolo de Internet (IP) enviados pelo Socket.

UseOnlyOverlappedIO

Recebe ou define um valor que especifica se o socket deve usar apenas o modo de E/S sobreposto. No .NET 5+ (incluindo .NET versões Core), o valor é sempre false.

Métodos

Name Description
Accept()

Cria uma nova Socket ligação para uma ligação recém-criada.

AcceptAsync(SocketAsyncEventArgs)

Inicia uma operação assíncrona para aceitar uma tentativa de ligação recebida.

BeginAccept(AsyncCallback, Object)

Inicia uma operação assíncrona para aceitar uma tentativa de ligação recebida.

BeginAccept(Int32, AsyncCallback, Object)

Inicia uma operação assíncrona para aceitar uma tentativa de ligação recebida e recebe o primeiro bloco de dados enviado pela aplicação cliente.

BeginAccept(Socket, Int32, AsyncCallback, Object)

Inicia uma operação assíncrona para aceitar uma tentativa de ligação de entrada a partir de um socket especificado e recebe o primeiro bloco de dados enviado pela aplicação cliente.

BeginConnect(EndPoint, AsyncCallback, Object)

Inicia um pedido assíncrono para uma ligação remota ao host.

BeginConnect(IPAddress, Int32, AsyncCallback, Object)

Inicia um pedido assíncrono para uma ligação remota ao host. O host é especificado por um IPAddress e um número de porta.

BeginConnect(IPAddress[], Int32, AsyncCallback, Object)

Inicia um pedido assíncrono para uma ligação remota ao host. O host é especificado por um IPAddress array e um número de porta.

BeginConnect(String, Int32, AsyncCallback, Object)

Inicia um pedido assíncrono para uma ligação remota ao host. O host é especificado por um nome de host e um número de porta.

BeginDisconnect(Boolean, AsyncCallback, Object)

Inicia um pedido assíncrono para desligar de um endpoint remoto.

BeginReceive(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object)

Começa a receber dados assíncronos de um .Socket

BeginReceive(Byte[], Int32, Int32, SocketFlags, SocketError, AsyncCallback, Object)

Começa a receber dados assíncronos de um .Socket

BeginReceive(IList<ArraySegment<Byte>>, SocketFlags, AsyncCallback, Object)

Começa a receber dados assíncronos de um .Socket

BeginReceive(IList<ArraySegment<Byte>>, SocketFlags, SocketError, AsyncCallback, Object)

Começa a receber dados assíncronos de um .Socket

BeginReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint, AsyncCallback, Object)

Começa a receber dados de forma assíncrona de um dispositivo de rede especificado.

BeginReceiveMessageFrom(Byte[], Int32, Int32, SocketFlags, EndPoint, AsyncCallback, Object)

Começa a receber assíncronamente o número especificado de bytes de dados na localização especificada do buffer de dados, usando o especificado SocketFlags, e armazena a informação do endpoint e do pacote.

BeginSend(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object)

Envia dados assíncronos para um .Socket

BeginSend(Byte[], Int32, Int32, SocketFlags, SocketError, AsyncCallback, Object)

Envia dados assíncronos para um .Socket

BeginSend(IList<ArraySegment<Byte>>, SocketFlags, AsyncCallback, Object)

Envia dados assíncronos para um .Socket

BeginSend(IList<ArraySegment<Byte>>, SocketFlags, SocketError, AsyncCallback, Object)

Envia dados assíncronos para um .Socket

BeginSendFile(String, AsyncCallback, Object)

Envia o ficheiro fileName para um objeto ligado Socket usando a UseDefaultWorkerThread flag.

BeginSendFile(String, Byte[], Byte[], TransmitFileOptions, AsyncCallback, Object)

Envia um ficheiro e buffers de dados de forma assíncrona para um objeto ligado Socket .

BeginSendTo(Byte[], Int32, Int32, SocketFlags, EndPoint, AsyncCallback, Object)

Envia dados de forma assíncrona para um host remoto específico.

Bind(EndPoint)

Associa a Socket a um endpoint local.

CancelConnectAsync(SocketAsyncEventArgs)

Cancela um pedido assíncrono para uma ligação remota ao host.

Close()

Fecha a Socket ligação e liberta todos os recursos associados.

Close(Int32)

Fecha a Socket ligação e liberta todos os recursos associados com um timeout especificado para permitir o envio de dados em fila.

Connect(EndPoint)

Estabelece uma ligação a um host remoto.

Connect(IPAddress, Int32)

Estabelece uma ligação a um host remoto. O host é especificado por um endereço IP e um número de porta.

Connect(IPAddress[], Int32)

Estabelece uma ligação a um host remoto. O host é especificado por um array de endereços IP e um número de porta.

Connect(String, Int32)

Estabelece uma ligação a um host remoto. O host é especificado por um nome de host e um número de porta.

ConnectAsync(SocketAsyncEventArgs)

Inicia um pedido assíncrono para ligação a um host remoto.

ConnectAsync(SocketType, ProtocolType, SocketAsyncEventArgs)

Inicia um pedido assíncrono para ligação a um host remoto.

Disconnect(Boolean)

Fecha a ligação da tomada e permite a reutilização da tomada.

DisconnectAsync(SocketAsyncEventArgs)

Inicia um pedido assíncrono para desligar de um endpoint remoto.

Dispose()

Liberta todos os recursos usados pela instância atual da Socket classe.

Dispose(Boolean)

Liberta os recursos não geridos usados pelo Socket, e opcionalmente elimina os recursos geridos.

DuplicateAndClose(Int32)

Duplica a referência do soquete para o processo alvo e fecha o soquete para este processo.

EndAccept(Byte[], IAsyncResult)

Aceita assíncronamente uma tentativa de ligação recebida e cria um novo Socket objeto para gerir a comunicação remota do host. Este método devolve um buffer que contém os dados iniciais transferidos.

EndAccept(Byte[], Int32, IAsyncResult)

Aceita assíncronamente uma tentativa de ligação recebida e cria um novo Socket objeto para gerir a comunicação remota do host. Este método devolve um buffer que contém os dados iniciais e o número de bytes transferidos.

EndAccept(IAsyncResult)

Aceita assíncronamente uma tentativa de ligação recebida e cria uma nova Socket para gerir a comunicação remota do host.

EndConnect(IAsyncResult)

Termina um pedido de ligação assíncrona pendente.

EndDisconnect(IAsyncResult)

Termina um pedido de desconexão assíncrono pendente.

EndReceive(IAsyncResult, SocketError)

Termina uma leitura assíncrona pendente.

EndReceive(IAsyncResult)

Termina uma leitura assíncrona pendente.

EndReceiveFrom(IAsyncResult, EndPoint)

Termina uma leitura assíncrona pendente de um endpoint específico.

EndReceiveMessageFrom(IAsyncResult, SocketFlags, EndPoint, IPPacketInformation)

Termina uma leitura assíncrona pendente de um endpoint específico. Este método também revela mais informação sobre o pacote do que EndReceiveFrom(IAsyncResult, EndPoint).

EndSend(IAsyncResult, SocketError)

Termina um envio assíncrono pendente.

EndSend(IAsyncResult)

Termina um envio assíncrono pendente.

EndSendFile(IAsyncResult)

Termina um envio assíncrono pendente de um ficheiro.

EndSendTo(IAsyncResult)

Termina um envio assíncrono pendente para um local específico.

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
Finalize()

Liberta recursos usados pela Socket turma.

GetHashCode()

Devolve um valor de hash para uma Socket instância.

GetHashCode()

Serve como função de hash predefinida.

(Herdado de Object)
GetSocketOption(SocketOptionLevel, SocketOptionName, Byte[])

Devolve a opção especificada Socket , representada como um array de bytes.

GetSocketOption(SocketOptionLevel, SocketOptionName, Int32)

Devolve o valor da opção especificada Socket num array.

GetSocketOption(SocketOptionLevel, SocketOptionName)

Devolve o valor de uma opção especificada Socket , representada como um objeto.

GetType()

Obtém o Type da instância atual.

(Herdado de Object)
IOControl(Int32, Byte[], Byte[])

Define modos de funcionamento de baixo nível para o Socket uso de códigos numéricos de controlo.

IOControl(IOControlCode, Byte[], Byte[])

Define modos de operação de baixo nível para o Socket uso da IOControlCode enumeração para especificar códigos de controlo.

Listen(Int32)

Coloca o Socket A num estado de escuta.

MemberwiseClone()

Cria uma cópia superficial do atual Object.

(Herdado de Object)
Poll(Int32, SelectMode)

Determina o estado do Socket.

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

Recebe dados de um limite Socket para um buffer de receção, usando o especificado SocketFlags.

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

Recebe o número especificado de bytes de um limite Socket para a posição de deslocamento especificada do buffer de receção, usando o especificado SocketFlags.

Receive(Byte[], Int32, SocketFlags)

Recebe o número especificado de bytes de dados de um limite Socket para um buffer de receção, usando o especificado SocketFlags.

Receive(Byte[], SocketFlags)

Recebe dados de um limite Socket para um buffer de receção, usando o especificado SocketFlags.

Receive(Byte[])

Recebe dados de um bound Socket para um buffer de receção.

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

Recebe dados de um limite Socket para a lista de buffers de receção, usando o especificado SocketFlags.

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

Recebe dados de um limite Socket para a lista de buffers de receção, usando o especificado SocketFlags.

Receive(IList<ArraySegment<Byte>>)

Recebe dados de um bound Socket para a lista de buffers de receção.

Receive(Span<Byte>, SocketFlags, SocketError)

Recebe dados de um limite Socket para um buffer de receção, usando o especificado SocketFlags.

Receive(Span<Byte>, SocketFlags)

Recebe dados de um limite Socket para um buffer de receção, usando o especificado SocketFlags.

Receive(Span<Byte>)

Recebe dados de um bound Socket para um buffer de receção.

ReceiveAsync(SocketAsyncEventArgs)

Inicia um pedido assíncrono para receber dados de um objeto ligado Socket .

ReceiveFrom(Byte[], EndPoint)

Recebe um datagrama no buffer de dados e armazena o endpoint.

ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)

Recebe o número especificado de bytes de dados na localização especificada do buffer de dados, usando o especificado SocketFlags, e armazena o endpoint.

ReceiveFrom(Byte[], Int32, SocketFlags, EndPoint)

Recebe o número especificado de bytes no data buffer, usando o especificado SocketFlags, e armazena o endpoint.

ReceiveFrom(Byte[], SocketFlags, EndPoint)

Recebe um datagrama no buffer de dados, usando o especificado SocketFlags, e armazena o endpoint.

ReceiveFromAsync(SocketAsyncEventArgs)

Começa a receber dados de forma assíncrona de um dispositivo de rede especificado.

ReceiveMessageFrom(Byte[], Int32, Int32, SocketFlags, EndPoint, IPPacketInformation)

Recebe o número especificado de bytes de dados na localização especificada do buffer de dados, usando o , e SocketFlagsarmazena a informação do endpoint e do pacote.

ReceiveMessageFromAsync(SocketAsyncEventArgs)

Começa a receber assíncronamente o número especificado de bytes de dados para a localização especificada no buffer de dados, usando o especificado SocketFlags, e armazena a informação do endpoint e do pacote.

Select(IList, IList, IList, Int32)

Determina o estado de um ou mais soquetes.

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(Byte[], Int32, SocketFlags)

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

Send(Byte[], SocketFlags)

Envia dados para um ligado Socket usando o especificado SocketFlags.

Send(Byte[])

Envia dados para um .Socket

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

Envia o conjunto de buffers na lista para um conectado 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(IList<ArraySegment<Byte>>)

Envia o conjunto de buffers na lista para um .Socket

Send(ReadOnlySpan<Byte>, SocketFlags, SocketError)

Envia dados para um ligado Socket usando o especificado SocketFlags.

Send(ReadOnlySpan<Byte>, SocketFlags)

Envia dados para um ligado Socket usando o especificado SocketFlags.

Send(ReadOnlySpan<Byte>)

Envia dados para um .Socket

SendAsync(SocketAsyncEventArgs)

Envia dados de forma assíncrona para um objeto ligado Socket .

SendFile(String, Byte[], Byte[], TransmitFileOptions)

Envia o ficheiro fileName e os buffers de dados para um objeto ligado Socket usando o valor especificado TransmitFileOptions .

SendFile(String)

Envia o ficheiro fileName para um objeto ligado Socket com a UseDefaultWorkerThread bandeira de transmissão.

SendPacketsAsync(SocketAsyncEventArgs)

Envia uma coleção de ficheiros ou buffers de dados em memória de forma assíncrona para um objeto ligado Socket .

SendTo(Byte[], EndPoint)

Envia dados para o endpoint especificado.

SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)

Envia o número especificado de bytes de dados para o endpoint especificado, começando na localização especificada no buffer, e usando o .SocketFlags

SendTo(Byte[], Int32, SocketFlags, EndPoint)

Envia o número especificado de bytes de dados para o endpoint especificado usando o .SocketFlags

SendTo(Byte[], SocketFlags, EndPoint)

Envia dados para um endpoint específico usando o especificado SocketFlags.

SendToAsync(SocketAsyncEventArgs)

Envia dados de forma assíncrona para um host remoto específico.

SetIPProtectionLevel(IPProtectionLevel)

Define o nível de proteção IP numa soquete.

SetSocketOption(SocketOptionLevel, SocketOptionName, Boolean)

Define a opção especificada Socket para o valor especificado Boolean .

SetSocketOption(SocketOptionLevel, SocketOptionName, Byte[])

Define a opção especificada Socket para o valor especificado, representado como um array de bytes.

SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)

Define a opção especificada Socket para o valor inteiro especificado.

SetSocketOption(SocketOptionLevel, SocketOptionName, Object)

Define a opção especificada Socket para o valor especificado, representado como um objeto.

Shutdown(SocketShutdown)

Desabilita envio e recebe em um Socket.

ToString()

Devolve uma cadeia que representa o objeto atual.

(Herdado de Object)

Implementações de Interface Explícita

Name Description
IDisposable.Dispose()

Esta API suporta a infraestrutura de produtos e não é pressuposta para ser utilizada diretamente a partir do seu código.

Liberta todos os recursos utilizados pelo Socket.

Métodos da Extensão

Name Description
AcceptAsync(Socket, Socket)

Executa uma operação assíncrona para aceitar uma tentativa de ligação recebida no socket.

AcceptAsync(Socket)

Executa uma operação assíncrona para aceitar uma tentativa de ligação recebida no socket.

ConnectAsync(Socket, EndPoint)

Estabelece uma ligação a um host remoto.

ConnectAsync(Socket, IPAddress, Int32)

Estabelece uma ligação a um host remoto. O host é especificado por um endereço IP e um número de porta.

ConnectAsync(Socket, IPAddress[], Int32)

Estabelece uma ligação a um host remoto. O host é especificado por um array de endereços IP e um número de porta.

ConnectAsync(Socket, String, Int32)

Estabelece uma ligação a um host remoto. O host é especificado por um nome de host e um número de porta.

ReceiveAsync(Socket, ArraySegment<Byte>, SocketFlags)

Recebe dados de uma tomada ligada.

ReceiveAsync(Socket, IList<ArraySegment<Byte>>, SocketFlags)

Recebe dados de uma tomada ligada.

ReceiveAsync(Socket, Memory<Byte>, SocketFlags, CancellationToken)

Recebe dados de uma tomada ligada.

ReceiveFromAsync(Socket, ArraySegment<Byte>, SocketFlags, EndPoint)

Recebe dados de um dispositivo de rede especificado.

ReceiveMessageFromAsync(Socket, ArraySegment<Byte>, SocketFlags, EndPoint)

Recebe o número especificado de bytes de dados na localização especificada do buffer de dados, usando o , e SocketFlagsarmazena a informação do endpoint e do pacote.

SendAsync(Socket, ArraySegment<Byte>, SocketFlags)

Envia dados para um soquete conectado.

SendAsync(Socket, IList<ArraySegment<Byte>>, SocketFlags)

Envia dados para um soquete conectado.

SendAsync(Socket, ReadOnlyMemory<Byte>, SocketFlags, CancellationToken)

Envia dados para um soquete conectado.

SendToAsync(Socket, ArraySegment<Byte>, SocketFlags, EndPoint)

Envia dados de forma assíncrona para um host remoto específico.

Aplica-se a

Segurança de Thread

É seguro realizar simultaneamente uma operação de envio e receção numa Socket instância, mas não é recomendado emitir múltiplas chamadas de envio ou múltiplas receção em simultâneo. Dependendo da implementação subjacente da plataforma, isto pode levar a intercalações não intencionais de dados para envios ou receções grandes ou multi-buffer.

Ver também