Ler em inglês

Partilhar via


Socket.ReceiveFrom Método

Definição

Recebe um datagrama e armazena o ponto de extremidade de origem.

Sobrecargas

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

Recebe o número especificado de bytes no buffer de dados usando o SocketFlags especificado e armazena o ponto de extremidade.

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

Recebe o número de bytes de dados no local especificado no buffer de dados usando o SocketFlags especificado e armazena o ponto de extremidade.

ReceiveFrom(Span<Byte>, SocketFlags, EndPoint)

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

ReceiveFrom(Byte[], SocketFlags, EndPoint)

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

ReceiveFrom(Span<Byte>, SocketFlags, SocketAddress)

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

ReceiveFrom(Span<Byte>, EndPoint)

Recebe um datagrama no buffer de dados e armazena o ponto de extremidade.

ReceiveFrom(Byte[], EndPoint)

Recebe um datagrama no buffer de dados e armazena o ponto de extremidade.

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

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

Recebe o número especificado de bytes no buffer de dados usando o SocketFlags especificado e armazena o ponto de extremidade.

C#
public int ReceiveFrom(byte[] buffer, int size, System.Net.Sockets.SocketFlags socketFlags, ref System.Net.EndPoint remoteEP);

Parâmetros

buffer
Byte[]

Uma matriz do tipo Byte que é o local de armazenamento dos dados recebidos.

size
Int32

O número de bytes a serem recebidos.

socketFlags
SocketFlags

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

remoteEP
EndPoint

Uma referência a um EndPoint do mesmo tipo que o ponto de extremidade do host remoto a ser atualizado no recebimento bem-sucedido.

Retornos

O número de bytes recebidos.

Exceções

buffer é null.

- ou -

remoteEP é null.

size é menor que 0.

- ou -

size é maior que o comprimento do buffer.

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

- ou -

A propriedade LocalEndPoint não foi definida.

- ou -

Ocorre um erro de sistema operacional ao acessar o Socket.

Um chamador na pilha de chamadas não tem as permissões necessárias.

Exemplos

O exemplo de código a seguir recebe um datagrama sem conexão de um host remoto. O tamanho do buffer e SocketFlags são passados para o ReceiveFrom método .

C#
public static void ReceiveFrom3()
{
    IPHostEntry hostEntry = Dns.GetHostEntry(Dns.GetHostName());
    IPEndPoint endPoint = new IPEndPoint(hostEntry.AddressList[0], 11000);

    Socket s = new Socket(endPoint.Address.AddressFamily,
        SocketType.Dgram,
        ProtocolType.Udp);

    // Creates an IPEndPoint to capture the identity of the sending host.
    IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
    EndPoint senderRemote = (EndPoint)sender;

    // Binding is required with ReceiveFrom calls.
    s.Bind(endPoint);

    byte[] msg = new Byte[256];
    Console.WriteLine("Waiting to receive datagrams from client...");
    // This call blocks.
    s.ReceiveFrom(msg, msg.Length, SocketFlags.None, ref senderRemote);
    s.Close();
}

Comentários

O ReceiveFrom método lê dados no buffer parâmetro , retorna o número de bytes lidos com êxito e captura o ponto de extremidade do host remoto do qual os dados foram enviados. Esse método será útil se você pretende receber datagramas sem conexão de um host desconhecido ou de vários hosts.

Essa sobrecarga requer apenas que você forneça um buffer de recebimento, o número de bytes que você deseja receber, o necessário SocketFlagse um EndPoint que representa o host remoto. O deslocamento do buffer assume como padrão 0.

Com protocolos sem conexão, ReceiveFrom lerá o primeiro datagrama enfileirado recebido no buffer de rede local. Se o datagrama recebido for maior que o tamanho de buffer, o ReceiveFrom método preencherá buffer com o máximo possível da mensagem e gerará um SocketException. Se você estiver usando um protocolo não confiável, os dados em excesso serão perdidos. Se você estiver usando um protocolo confiável, os dados em excesso serão retidos pelo provedor de serviços e você poderá recuperá-los chamando o ReceiveFrom método com um buffer grande o suficiente.

Se nenhum dado estiver disponível para leitura, o ReceiveFrom método será bloqueado até que os dados sejam disponibilizados. Se você estiver no modo sem bloqueio e não houver dados disponíveis no buffer de pilha de protocolo, o ReceiveFrom método será concluído imediatamente e gerará um SocketException. Você pode usar a propriedade para determinar se os Available dados estão disponíveis para leitura. Quando Available for diferente de zero, repita a operação de recebimento.

Embora seja ReceiveFrom destinado a protocolos sem conexão, você também pode usar um protocolo orientado para conexão. Se você optar por fazer isso, primeiro deverá estabelecer uma conexão de host remoto chamando o Connect método ou aceitar uma conexão de host remoto de entrada chamando o Accept método . Se você não estabelecer ou aceitar uma conexão antes de chamar o ReceiveFrom método , obterá um SocketException. Você também pode estabelecer um host remoto padrão para um protocolo sem conexão antes de chamar o ReceiveFrom método .

Com soquetes orientados à conexão, ReceiveFrom lerá o máximo de dados que estiver disponível até o número de bytes especificado pelo size parâmetro . Se o host remoto desligar a Socket conexão com o Shutdown método e todos os dados disponíveis tiverem sido recebidos, o ReceiveFrom método será concluído imediatamente e retornará zero bytes.

Nota

Antes de chamar ReceiveFrom, você deve associar explicitamente o Socket a um ponto de extremidade local usando o Bind método . Se você não fizer isso, ReceiveFrom lançará 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.

Nota

O AddressFamily do EndPoint usado em ReceiveFrom precisa corresponder ao AddressFamily do EndPoint usado em SendTo.

Nota

Esse membro emite o rastreamento de informações quando você ativa o rastreamento de rede em seu aplicativo. Para obter mais informações, consulte Rastreamento de rede em .NET Framework.

Confira também

Aplica-se a

.NET 10 e outras versões
Produto Versões
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.3, 1.4, 1.6, 2.0, 2.1

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

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

Recebe o número de bytes de dados no local especificado no buffer de dados usando o SocketFlags especificado e armazena o ponto de extremidade.

C#
public int ReceiveFrom(byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, ref System.Net.EndPoint remoteEP);

Parâmetros

buffer
Byte[]

Uma matriz do tipo Byte que é o local de armazenamento dos dados recebidos.

offset
Int32

A posição no parâmetro buffer para armazenar os dados recebidos.

size
Int32

O número de bytes a serem recebidos.

socketFlags
SocketFlags

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

remoteEP
EndPoint

Uma referência a um EndPoint do mesmo tipo que o ponto de extremidade do host remoto a ser atualizado no recebimento bem-sucedido.

Retornos

O número de bytes recebidos.

Exceções

buffer é null.

- ou -

remoteEP é null.

offset é menor que 0.

- ou -

offset é maior que o comprimento do buffer.

- ou -

size é menor que 0.

- ou -

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

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

- ou -

A propriedade LocalEndPoint não foi definida.

- ou -

Ocorreu um erro ao tentar acessar o soquete.

Exemplos

O exemplo de código a seguir recebe um datagrama sem conexão de um host remoto. O deslocamento, o tamanho do buffer e SocketFlags são passados para o ReceiveFrom método .

C#
public static void ReceiveFrom4()
{
    IPHostEntry hostEntry = Dns.GetHostEntry(Dns.GetHostName());
    IPEndPoint endPoint = new IPEndPoint(hostEntry.AddressList[0], 11000);

    Socket s = new Socket(endPoint.Address.AddressFamily,
        SocketType.Dgram,
        ProtocolType.Udp);

    // Creates an IpEndPoint to capture the identity of the sending host.
    IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
    EndPoint senderRemote = (EndPoint)sender;

    // Binding is required with ReceiveFrom calls.
    s.Bind(endPoint);
    byte[] msg = new Byte[256];
    Console.WriteLine("Waiting to receive datagrams from client...");
    // This call blocks.
    s.ReceiveFrom(msg, 0, msg.Length, SocketFlags.None, ref senderRemote);
    s.Close();
}

Comentários

O ReceiveFrom método lê dados no buffer parâmetro , retorna o número de bytes lidos com êxito e captura o ponto de extremidade do host remoto do qual os dados foram enviados. Esse método será útil se você pretende receber datagramas sem conexão de um host desconhecido ou de vários hosts.

Com protocolos sem conexão, ReceiveFrom lerá o primeiro datagrama enfileirado recebido no buffer de rede local. Se o datagrama recebido for maior que o tamanho de buffer, o ReceiveFrom método preencherá buffer com o máximo possível da mensagem e gerará um SocketException. Se você estiver usando um protocolo não confiável, os dados em excesso serão perdidos. Se você estiver usando um protocolo confiável, os dados em excesso serão retidos pelo provedor de serviços e você poderá recuperá-los chamando o ReceiveFrom método com um buffer grande o suficiente.

Se nenhum dado estiver disponível para leitura, o ReceiveFrom método será bloqueado até que os dados sejam disponibilizados. Se você estiver no modo sem bloqueio e não houver dados disponíveis no buffer de pilha de protocolo, o ReceiveFrom método será concluído imediatamente e gerará um SocketException. Você pode usar a propriedade para determinar se os Available dados estão disponíveis para leitura. Quando Available for diferente de zero, repita a operação de recebimento.

Embora seja ReceiveFrom destinado a protocolos sem conexão, você também pode usar um protocolo orientado para conexão. Se você optar por fazer isso, primeiro deverá estabelecer uma conexão de host remoto chamando o Connect método ou aceitar uma conexão de host remoto de entrada chamando o Accept método . Se você não estabelecer ou aceitar uma conexão antes de chamar o ReceiveFrom método, obterá um SocketException. Você também pode estabelecer um host remoto padrão para um protocolo sem conexão antes de chamar o ReceiveFrom método .

Com soquetes orientados à conexão, ReceiveFrom lerá o máximo de dados que estiver disponível até a quantidade de bytes especificada pelo size parâmetro . Se o host remoto desligar a Socket conexão com o Shutdown método e todos os dados disponíveis tiverem sido Recebidos, o ReceiveFrom método será concluído imediatamente e retornará zero bytes.

Nota

Antes de chamar ReceiveFrom, você deve associar explicitamente o Socket a um ponto de extremidade local usando o Bind método . Se você não fizer isso, ReceiveFrom lançará 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.

Nota

O AddressFamily do EndPoint usado em ReceiveFrom precisa corresponder ao AddressFamily do EndPoint usado em SendTo.

Nota

Esse membro emite o rastreamento de informações quando você ativa o rastreamento de rede em seu aplicativo. Para obter mais informações, consulte Rastreamento de rede em .NET Framework.

Confira também

Aplica-se a

.NET 10 e outras versões
Produto Versões
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.3, 1.4, 1.6, 2.0, 2.1

ReceiveFrom(Span<Byte>, SocketFlags, EndPoint)

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

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

C#
public int ReceiveFrom(Span<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, ref System.Net.EndPoint remoteEP);

Parâmetros

buffer
Span<Byte>

Um intervalo de bytes que é o local de armazenamento para dados recebidos.

socketFlags
SocketFlags

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

remoteEP
EndPoint

Uma referência a um EndPoint do mesmo tipo que o ponto de extremidade do host remoto a ser atualizado no recebimento bem-sucedido.

Retornos

O número de bytes recebidos.

Exceções

remoteEP é null.

Ocorreu um erro ao tentar acessar o soquete.

Aplica-se a

.NET 10 e outras versões
Produto Versões
.NET 6, 7, 8, 9, 10

ReceiveFrom(Byte[], SocketFlags, EndPoint)

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

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

C#
public int ReceiveFrom(byte[] buffer, System.Net.Sockets.SocketFlags socketFlags, ref System.Net.EndPoint remoteEP);

Parâmetros

buffer
Byte[]

Uma matriz do tipo Byte que é o local de armazenamento dos dados recebidos.

socketFlags
SocketFlags

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

remoteEP
EndPoint

Uma referência a um EndPoint do mesmo tipo que o ponto de extremidade do host remoto a ser atualizado no recebimento bem-sucedido.

Retornos

O número de bytes recebidos.

Exceções

buffer é null.

- ou -

remoteEP é null.

Ocorreu um erro ao tentar acessar o soquete.

Um chamador na pilha de chamadas não tem as permissões necessárias.

Exemplos

O exemplo de código a seguir recebe um datagrama sem conexão de um host remoto. SocketFlags são passados para o ReceiveFrom método .

C#
public static void ReceiveFrom2()
{
    IPHostEntry hostEntry = Dns.GetHostEntry(Dns.GetHostName());
    IPEndPoint endPoint = new IPEndPoint(hostEntry.AddressList[0], 11000);

    Socket s = new Socket(endPoint.Address.AddressFamily,
        SocketType.Dgram,
        ProtocolType.Udp);

    // Creates an IpEndPoint to capture the identity of the sending host.
    IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
    EndPoint senderRemote = (EndPoint)sender;

    // Binding is required with ReceiveFrom calls.
    s.Bind(endPoint);

    byte[] msg = new Byte[256];
    Console.WriteLine("Waiting to receive datagrams from client...");
    // This call blocks.
    s.ReceiveFrom(msg, SocketFlags.None, ref senderRemote);
    s.Close();
}

Comentários

O ReceiveFrom método lê dados no buffer parâmetro , retorna o número de bytes lidos com êxito e captura o ponto de extremidade do host remoto do qual os dados foram enviados. Esse método será útil se você pretende receber datagramas sem conexão de um host desconhecido ou de vários hosts.

Essa sobrecarga exige apenas que você forneça um buffer de recebimento, o necessário SocketFlagse um EndPoint que represente o host remoto. O deslocamento é padrão para 0 e o tamanho usa como padrão o comprimento do parâmetro buffer.

Nota

Antes de chamar ReceiveFrom, você deve associar explicitamente o Socket a um ponto de extremidade local usando o Bind método . Se você não fizer isso, ReceiveFrom lançará um SocketException.

Com protocolos sem conexão, ReceiveFrom lerá o primeiro datagrama enfileirado recebido no buffer de rede local. Se o datagrama recebido for maior que o tamanho de buffer, o ReceiveFrom método preencherá buffer com o máximo possível da mensagem e lançará um SocketException. Se você estiver usando um protocolo não confiável, os dados em excesso serão perdidos. Se você estiver usando um protocolo confiável, os dados em excesso serão retidos pelo provedor de serviços e você poderá recuperá-los chamando o ReceiveFrom método com um buffer grande o suficiente.

Se nenhum dado estiver disponível para leitura, o ReceiveFrom método será bloqueado até que os dados sejam disponibilizados. Se você estiver no modo de não bloqueio e não houver dados disponíveis no buffer de pilha de protocolo, o ReceiveFrom método será concluído imediatamente e gerará um SocketException. Você pode usar a propriedade para determinar se os Available dados estão disponíveis para leitura. Quando Available não for zero, tente novamente a operação de recebimento.

Embora seja ReceiveFrom destinado a protocolos sem conexão, você também pode usar um protocolo orientado a conexões. Se você optar por fazer isso, primeiro deverá estabelecer uma conexão de host remoto chamando o Connect método ou aceitar uma conexão de host remoto de entrada chamando o Accept método . Se você não estabelecer ou aceitar uma conexão antes de chamar o ReceiveFrom método, obterá um SocketException. Você também pode estabelecer um host remoto padrão para um protocolo sem conexão antes de chamar o ReceiveFrom método .

Com soquetes orientados à conexão, ReceiveFrom lerá o máximo de dados que estiver disponível até o tamanho de buffer. Se o host remoto desligar a Socket conexão com o Shutdown método e todos os dados disponíveis tiverem sido Recebidos, o ReceiveFrom método será concluído imediatamente e retornará zero bytes.

Nota

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.

Nota

O AddressFamily do EndPoint usado em ReceiveFrom precisa corresponder ao AddressFamily do EndPoint usado em SendTo.

Nota

Esse membro emite o rastreamento de informações quando você ativa o rastreamento de rede em seu aplicativo. Para obter mais informações, consulte Rastreamento de rede em .NET Framework.

Confira também

Aplica-se a

.NET 10 e outras versões
Produto Versões
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.3, 1.4, 1.6, 2.0, 2.1

ReceiveFrom(Span<Byte>, SocketFlags, SocketAddress)

Origem:
Socket.cs
Origem:
Socket.cs

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

C#
public int ReceiveFrom(Span<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, System.Net.SocketAddress receivedAddress);

Parâmetros

buffer
Span<Byte>

Um intervalo de bytes que é o local de armazenamento para dados recebidos.

socketFlags
SocketFlags

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

receivedAddress
SocketAddress

Uma SocketAddress instância que é atualizada com o valor do par remoto quando esse método retorna.

Retornos

O número de bytes recebidos.

Exceções

receivedAddress é null.

Ocorreu um erro ao tentar acessar o soquete.

Aplica-se a

.NET 10 e outras versões
Produto Versões
.NET 8, 9, 10

ReceiveFrom(Span<Byte>, EndPoint)

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

Recebe um datagrama no buffer de dados e armazena o ponto de extremidade.

C#
public int ReceiveFrom(Span<byte> buffer, ref System.Net.EndPoint remoteEP);

Parâmetros

buffer
Span<Byte>

Um intervalo de bytes que é o local de armazenamento para dados recebidos.

remoteEP
EndPoint

Uma referência a um EndPoint do mesmo tipo que o ponto de extremidade do host remoto a ser atualizado no recebimento bem-sucedido.

Retornos

O número de bytes recebidos.

Exceções

remoteEP é null.

Ocorreu um erro ao tentar acessar o soquete.

Aplica-se a

.NET 10 e outras versões
Produto Versões
.NET 6, 7, 8, 9, 10

ReceiveFrom(Byte[], EndPoint)

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

Recebe um datagrama no buffer de dados e armazena o ponto de extremidade.

C#
public int ReceiveFrom(byte[] buffer, ref System.Net.EndPoint remoteEP);

Parâmetros

buffer
Byte[]

Uma matriz do tipo Byte que é o local de armazenamento dos dados recebidos.

remoteEP
EndPoint

Uma referência a um EndPoint do mesmo tipo que o ponto de extremidade do host remoto a ser atualizado no recebimento bem-sucedido.

Retornos

O número de bytes recebidos.

Exceções

buffer é null.

- ou -

remoteEP é null.

Ocorreu um erro ao tentar acessar o soquete.

Um chamador na pilha de chamadas não tem as permissões necessárias.

Exemplos

O exemplo de código a seguir recebe um datagrama sem conexão de um host remoto.

C#
public static void ReceiveFrom1()
{
    IPHostEntry hostEntry = Dns.GetHostEntry(Dns.GetHostName());
    IPEndPoint endPoint = new IPEndPoint(hostEntry.AddressList[0], 11000);

    Socket s = new Socket(endPoint.Address.AddressFamily,
        SocketType.Dgram,
        ProtocolType.Udp);

    // Creates an IPEndPoint to capture the identity of the sending host.
    IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
    EndPoint senderRemote = (EndPoint)sender;

    // Binding is required with ReceiveFrom calls.
    s.Bind(endPoint);

    byte[] msg = new Byte[256];
    Console.WriteLine("Waiting to receive datagrams from client...");

    // This call blocks.
    s.ReceiveFrom(msg, ref senderRemote);
    s.Close();
}

Comentários

O ReceiveFrom método lê dados no buffer parâmetro , retorna o número de bytes lidos com êxito e captura o ponto de extremidade do host remoto do qual os dados foram enviados. Esse método será útil se você pretende receber datagramas sem conexão de um host desconhecido ou de vários hosts.

Essa sobrecarga exige apenas que você forneça um recebimento buffere um EndPoint que represente o host remoto. O deslocamento do buffer é padrão para 0. O tamanho usa como padrão o comprimento do buffer parâmetro e o socketFlags valor é padrão para None.

Nota

Antes de chamar ReceiveFrom, você deve associar explicitamente o Socket a um ponto de extremidade local usando o Bind método . Se você não fizer isso, ReceiveFrom lançará um SocketException.

Com protocolos sem conexão, ReceiveFrom lerá o primeiro datagrama enfileirado recebido no buffer de rede local. Se o datagrama recebido for maior que o tamanho de buffer, o ReceiveFrom método preencherá buffer com o máximo possível da mensagem e gerará um SocketException. Se você estiver usando um protocolo não confiável, os dados em excesso serão perdidos. Se você estiver usando um protocolo confiável, os dados em excesso serão retidos pelo provedor de serviços e você poderá recuperá-los chamando o ReceiveFrom método com um buffer grande o suficiente.

Se nenhum dado estiver disponível para leitura, o ReceiveFrom método será bloqueado até que os dados sejam disponibilizados. Se você estiver no modo sem bloqueio e não houver dados disponíveis no buffer de pilha de protocolo, o ReceiveFrom método será concluído imediatamente e gerará um SocketException. Você pode usar a propriedade para determinar se os Available dados estão disponíveis para leitura. Quando Available for diferente de zero, repita a operação de recebimento.

Embora seja ReceiveFrom destinado a protocolos sem conexão, você também pode usar um protocolo orientado para conexão. Se você optar por fazer isso, primeiro deverá estabelecer uma conexão de host remoto chamando o Connect método ou aceitar uma conexão de host remoto de entrada chamando o Accept método . Se você não estabelecer ou aceitar uma conexão antes de chamar o ReceiveFrom método , obterá um SocketException. Você também pode estabelecer um host remoto padrão para um protocolo sem conexão antes de chamar o ReceiveFrom método .

Com soquetes orientados à conexão, ReceiveFrom lerá o máximo de dados que estiver disponível até o tamanho de buffer. Se o host remoto desligar a Socket conexão com o Shutdown método e todos os dados disponíveis tiverem sido recebidos, o ReceiveFrom método será concluído imediatamente e retornará zero bytes.

Nota

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.

Nota

O AddressFamily do EndPoint usado em ReceiveFrom precisa corresponder ao AddressFamily do EndPoint usado em SendTo.

Nota

Esse membro emite o rastreamento de informações quando você ativa o rastreamento de rede em seu aplicativo. Para obter mais informações, consulte Rastreamento de rede em .NET Framework.

Confira também

Aplica-se a

.NET 10 e outras versões
Produto Versões
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.3, 1.4, 1.6, 2.0, 2.1