Sdílet prostřednictvím


Socket.Receive Metoda

Definice

Přijímá data ze vázaného Socket.

Přetížení

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

Přijímá data z vazby Socket do vyrovnávací paměti příjmu pomocí zadané SocketFlags.

Receive(Span<Byte>, SocketFlags, SocketError)

Přijímá data z vazby Socket do vyrovnávací paměti příjmu pomocí zadané SocketFlags.

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

Přijímá data z vazby Socket do seznamu příjmových vyrovnávacích pamětí pomocí zadaného SocketFlags.

Receive(Byte[], Int32, SocketFlags)

Přijme zadaný počet bajtů dat z vazby Socket do vyrovnávací paměti příjmu pomocí zadané SocketFlags.

Receive(Span<Byte>, SocketFlags)

Přijímá data z vazby Socket do vyrovnávací paměti příjmu pomocí zadané SocketFlags.

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

Přijme zadaný počet bajtů z vazby Socket do zadané pozice posunu vyrovnávací paměti příjmu pomocí zadané SocketFlags.

Receive(Byte[], SocketFlags)

Přijímá data z vazby Socket do vyrovnávací paměti příjmu pomocí zadané SocketFlags.

Receive(Span<Byte>)

Přijímá data z vazby Socket do vyrovnávací paměti pro příjem.

Receive(IList<ArraySegment<Byte>>)

Přijímá data z vazby Socket do seznamu vyrovnávacích pamětí pro příjem.

Receive(Byte[])

Přijímá data z vazby Socket do vyrovnávací paměti pro příjem.

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

Přijímá data z vazby Socket do seznamu příjmových vyrovnávacích pamětí pomocí zadaného SocketFlags.

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

Zdroj:
Socket.cs
Zdroj:
Socket.cs
Zdroj:
Socket.cs

Přijímá data z vazby Socket do vyrovnávací paměti příjmu pomocí zadané SocketFlags.

public:
 int Receive(cli::array <System::Byte> ^ buffer, int offset, int size, System::Net::Sockets::SocketFlags socketFlags, [Runtime::InteropServices::Out] System::Net::Sockets::SocketError % errorCode);
public int Receive (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode);
member this.Receive : byte[] * int * int * System.Net.Sockets.SocketFlags * SocketError -> int
Public Function Receive (buffer As Byte(), offset As Integer, size As Integer, socketFlags As SocketFlags, ByRef errorCode As SocketError) As Integer

Parametry

buffer
Byte[]

Pole typu Byte , které je umístěním úložiště pro přijatá data.

offset
Int32

Pozice v parametru buffer pro uložení přijatých dat.

size
Int32

Počet bajtů, které se mají přijmout.

socketFlags
SocketFlags

Bitové kombinace SocketFlags hodnot.

errorCode
SocketError

Objekt SocketError , který ukládá chybu soketu.

Návraty

Počet přijatých bajtů.

Výjimky

buffer je null.

offset je menší než 0.

-nebo-

offsetje větší než délka .buffer

-nebo-

size je menší než 0.

-nebo-

size je větší než délka buffer minus hodnota parametru offset .

Volající v zásobníku volání nemá požadovaná oprávnění.

Poznámky

Metoda Receive načte data do parametru vyrovnávací paměti a vrátí počet bajtů, které byly úspěšně přečteny. Můžete volat Receive ze soketů orientovaných na připojení i ze soketů bez připojení.

Pokud používáte protokol orientovaný na připojení, musíte buď volat Connect za účelem navázání připojení ke vzdálenému hostiteli nebo Accept přijetí příchozího připojení před voláním Receive. Metoda Receive bude číst pouze data, která přicházejí ze vzdáleného hostitele vytvořeného Connect v metodě nebo Accept . Pokud používáte protokol bez připojení, můžete použít také metodu ReceiveFrom . ReceiveFrom vám umožní přijímat data přicházející z libovolného hostitele.

Pokud nejsou k dispozici žádná data pro čtení, Receive metoda bude blokovat, dokud nebudou data k dispozici, pokud nebyla nastavena hodnota časového limitu pomocí Socket.ReceiveTimeout. Pokud došlo k překročení hodnoty časového limitu Receive , volání vyvolá SocketExceptionchybu . Pokud jste v neblokovacím režimu a ve vyrovnávací paměti zásobníku Receive protokolu nejsou k dispozici žádná data, metoda se okamžitě dokončí a vyvolá SocketException. Při pokusu o přístup k soketu došlo k chybě. Viz Poznámky níže. Pomocí vlastnosti můžete Available určit, jestli jsou data k dispozici pro čtení. Pokud Available je nenulová, zkuste operaci příjmu zopakovat.

Pokud používáte připojení orientované Socketna , Receive metoda přečte tolik dat, kolik je k dispozici, až do počtu bajtů určených parametrem size. Pokud vzdálený hostitel vypne Socket připojení s metodou Shutdown a všechna dostupná data byla přijata, Receive metoda se okamžitě dokončí a vrátí nula bajtů.

Pokud používáte bez Socketpřipojení , Receive přečte první datagram zařazený do fronty z cílové adresy, kterou zadáte v Connect metodě. Pokud je datagram, který obdržíte, větší než velikost parametru buffer , buffer vyplní se první část zprávy, nadbytečná data se ztratí a SocketException vyvolá se.

Poznámka

Tento člen poskytuje trasovací informace, když je ve vaší aplikaci povoleno trasování sítě. Další informace najdete v tématu Trasování sítě v rozhraní .NET Framework.

Viz také

Platí pro

Receive(Span<Byte>, SocketFlags, SocketError)

Zdroj:
Socket.cs
Zdroj:
Socket.cs
Zdroj:
Socket.cs

Přijímá data z vazby Socket do vyrovnávací paměti příjmu pomocí zadané SocketFlags.

public:
 int Receive(Span<System::Byte> buffer, System::Net::Sockets::SocketFlags socketFlags, [Runtime::InteropServices::Out] System::Net::Sockets::SocketError % errorCode);
public int Receive (Span<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode);
member this.Receive : Span<byte> * System.Net.Sockets.SocketFlags * SocketError -> int
Public Function Receive (buffer As Span(Of Byte), socketFlags As SocketFlags, ByRef errorCode As SocketError) As Integer

Parametry

buffer
Span<Byte>

Rozsah bajtů, který je umístěním úložiště pro přijatá data.

socketFlags
SocketFlags

Bitové kombinace hodnot výčtu, která určuje chování při odesílání a příjmu.

errorCode
SocketError

Když tato metoda vrátí, obsahuje jednu z hodnot výčtu, která definuje kódy chyb pro soket.

Návraty

Počet přijatých bajtů.

Výjimky

Při pokusu o přístup k soketu došlo k chybě.

Volající v zásobníku volání nemá požadovaná oprávnění.

Poznámky

Metoda Receive načte data do parametru vyrovnávací paměti a vrátí počet bajtů, které byly úspěšně přečteny. Můžete volat Receive ze soketů orientovaných na připojení i ze soketů bez připojení.

Toto přetížení vyžaduje pouze poskytnutí vyrovnávací paměti pro příjem. Výchozí posun vyrovnávací paměti je 0, výchozí velikost je délka parametru vyrovnávací paměti a SocketFlags výchozí hodnota Noneje .

Pokud používáte protokol orientovaný na připojení, musíte buď volat Connect za účelem navázání připojení vzdáleného hostitele, nebo Accept přijetí příchozího připojení před voláním Receive. Metoda Receive bude číst pouze data, která přicházejí ze vzdáleného hostitele vytvořeného Connect v metodě nebo Accept . Pokud používáte protokol bez připojení, můžete použít také metodu ReceiveFrom . ReceiveFrom vám umožní přijímat data přicházející z libovolného hostitele.

Pokud nejsou k dispozici žádná data pro čtení, Receive metoda bude blokovat, dokud nebudou data k dispozici, pokud nebyla nastavena hodnota časového limitu pomocí Socket.ReceiveTimeout. Při překročení hodnoty časového limitu Receive volání vyvolá SocketExceptionchybu . Pokud jste v neblokovacím režimu a ve vyrovnávací paměti zásobníku Receive protokolu nejsou k dispozici žádná data, metoda se okamžitě dokončí a vyvolá SocketException. Pomocí vlastnosti můžete Available určit, jestli jsou data k dispozici pro čtení. Pokud Available je nenulová, zkuste operaci příjmu zopakovat.

Pokud používáte připojení orientované Socketna , Receive metoda přečte tolik dat, kolik je k dispozici, až do velikosti vyrovnávací paměti. Pokud vzdálený hostitel vypne Socket připojení s metodou Shutdown a všechna dostupná data byla přijata, Receive metoda se okamžitě dokončí a vrátí nula bajtů.

Pokud používáte bez Socketpřipojení , Receive přečte první datagram zařazený do fronty z cílové adresy, kterou zadáte v Connect metodě. Pokud je datagram, který obdržíte, větší než velikost parametru buffer , buffer vyplní se první část zprávy, nadbytečná data se ztratí a SocketException vyvolá se.

Poznámka

Pokud se zobrazí SocketException, použijte SocketException.ErrorCode vlastnost k získání konkrétního kódu chyby. Jakmile tento kód získáte, projděte si podrobný popis chyby v dokumentaci k rozhraní API windows Sockets verze 2 .

Poznámka

Tento člen poskytuje trasovací informace, když je ve vaší aplikaci povoleno trasování sítě. Další informace najdete v tématu Trasování sítě v rozhraní .NET Framework.

Viz také

Platí pro

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

Zdroj:
Socket.cs
Zdroj:
Socket.cs
Zdroj:
Socket.cs

Přijímá data z vazby Socket do seznamu příjmových vyrovnávacích pamětí pomocí zadaného SocketFlags.

public:
 int Receive(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers, System::Net::Sockets::SocketFlags socketFlags, [Runtime::InteropServices::Out] System::Net::Sockets::SocketError % errorCode);
public int Receive (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode);
member this.Receive : System.Collections.Generic.IList<ArraySegment<byte>> * System.Net.Sockets.SocketFlags * SocketError -> int
Public Function Receive (buffers As IList(Of ArraySegment(Of Byte)), socketFlags As SocketFlags, ByRef errorCode As SocketError) As Integer

Parametry

buffers
IList<ArraySegment<Byte>>

Seznam ArraySegment<T>typů s Byte , který obsahuje přijatá data.

socketFlags
SocketFlags

Bitové kombinace SocketFlags hodnot.

errorCode
SocketError

Objekt SocketError , který ukládá chybu soketu.

Návraty

Počet přijatých bajtů.

Výjimky

buffers je null.

-nebo-

buffers. Počet je nula.

Při pokusu o přístup k soketu došlo k chybě.

Poznámky

Tato metoda načte data do parametru buffers a vrátí počet bajtů, které byly úspěšně přečteny. Můžete volat ze soketů orientovaných na připojení i ze soketů bez připojení.

Toto přetížení vyžaduje, abyste zadali jednu nebo více příjmových vyrovnávacích pamětí. Výchozí SocketFlags hodnota je None.

Pokud používáte protokol orientovaný na připojení, musíte buď volat Connect za účelem navázání připojení ke vzdálenému hostiteli nebo Accept přijetí příchozího připojení před voláním Receive. Metoda Receive bude číst pouze data, která přicházejí z připojení ke vzdálenému hostiteli vytvořenému Connect v metodě nebo Accept . Pokud používáte protokol bez připojení, můžete použít také metodu ReceiveFrom . ReceiveFrom vám umožní přijímat data přicházející z libovolného hostitele.

Pokud nejsou k dispozici žádná data pro čtení, Receive metoda bude blokovat, dokud nebudou data k dispozici, pokud nebyla nastavena hodnota časového limitu pomocí Socket.ReceiveTimeout. Pokud došlo k překročení hodnoty časového limitu Receive , volání vyvolá SocketException. Pokud jste v neblokovacím režimu a ve vyrovnávací paměti zásobníku Receive protokolu nejsou k dispozici žádná data, metoda se okamžitě dokončí a vyvolá SocketException. Pomocí vlastnosti můžete Available určit, jestli jsou data k dispozici pro čtení. Pokud Available je nenulová, zkuste operaci příjmu zopakovat.

Pokud používáte připojení orientované Socket, Receive metoda přečte tolik dat, kolik je k dispozici, až do velikosti vyrovnávací paměti. Pokud vzdálený hostitel vypne Socket připojení s metodou Shutdown a všechna dostupná data byla přijata, Receive metoda se okamžitě dokončí a vrátí nula bajtů.

Pokud používáte bez Socketpřipojení ,Receive přečte první datagram zařazený do fronty z cílové adresy, kterou zadáte v Connect metodě. Pokud je datagram, který obdržíte, větší než velikost parametru buffers , buffers vyplní se první část zprávy, nadbytečná data se ztratí a SocketException vyvolá se.

Poznámka

Pokud se zobrazí SocketException, použijte SocketException.ErrorCode vlastnost k získání konkrétního kódu chyby. Jakmile tento kód získáte, projděte si podrobný popis chyby v dokumentaci k rozhraní API windows Sockets verze 2 .

Poznámka

Tento člen poskytuje trasovací informace, když je ve vaší aplikaci povoleno trasování sítě. Další informace najdete v tématu Trasování sítě v rozhraní .NET Framework.

Viz také

Platí pro

Receive(Byte[], Int32, SocketFlags)

Zdroj:
Socket.cs
Zdroj:
Socket.cs
Zdroj:
Socket.cs

Přijme zadaný počet bajtů dat z vazby Socket do vyrovnávací paměti příjmu pomocí zadané SocketFlags.

public:
 int Receive(cli::array <System::Byte> ^ buffer, int size, System::Net::Sockets::SocketFlags socketFlags);
public int Receive (byte[] buffer, int size, System.Net.Sockets.SocketFlags socketFlags);
member this.Receive : byte[] * int * System.Net.Sockets.SocketFlags -> int
Public Function Receive (buffer As Byte(), size As Integer, socketFlags As SocketFlags) As Integer

Parametry

buffer
Byte[]

Pole typu Byte , které je umístěním úložiště pro přijatá data.

size
Int32

Počet bajtů, které se mají přijmout.

socketFlags
SocketFlags

Bitové kombinace SocketFlags hodnot.

Návraty

Počet přijatých bajtů.

Výjimky

buffer je null.

sizepřekračuje velikost .buffer

Při pokusu o přístup k soketu došlo k chybě.

Volající v zásobníku volání nemá požadovaná oprávnění.

Příklady

Následující příkaz obdrží data nalezená do buffera určuje None pro SocketFlags.

// Receive the host home page content and loop until all the data is received.
Int32 bytes = s->Receive( RecvBytes, RecvBytes->Length, SocketFlags::None );
strRetPage =  "Default HTML page on ";
strRetPage->Concat( server,  ":\r\n", ASCII->GetString( RecvBytes, 0, bytes ) );
while ( bytes > 0 )
{
   bytes = s->Receive( RecvBytes, RecvBytes->Length, SocketFlags::None );
   strRetPage->Concat( ASCII->GetString( RecvBytes, 0, bytes ) );
}

// Receive the host home page content and loop until all the data is received.
Int32 bytes = s.Receive(RecvBytes, RecvBytes.Length, 0);
strRetPage = "Default HTML page on " + server + ":\r\n";
strRetPage = strRetPage + ASCII.GetString(RecvBytes, 0, bytes);

while (bytes > 0)
{
  bytes = s.Receive(RecvBytes, RecvBytes.Length, 0);
  strRetPage = strRetPage + ASCII.GetString(RecvBytes, 0, bytes);
}

' Receive the host home page content and loop until all the data is received.

'Dim bytes As Int32 = s.Receive(RecvBytes, RecvBytes.Length, 0)
Dim bytes As Int32 = s.Receive(RecvBytes, RecvBytes.Length, 0)

strRetPage = "Default HTML page on " + server + ":\r\n"
strRetPage = "Default HTML page on " + server + ":" + ControlChars.Lf + ControlChars.NewLine

Dim i As Integer

While bytes > 0

  bytes = s.Receive(RecvBytes, RecvBytes.Length, 0)

  strRetPage = strRetPage + ASCII.GetString(RecvBytes, 0, bytes)

End While

Poznámky

Metoda Receive načte data do parametru buffer a vrátí počet bajtů, které byly úspěšně přečteny. Můžete volat Receive ze soketů orientovaných na připojení i ze soketů bez připojení.

Toto přetížení vyžaduje pouze poskytnutí vyrovnávací paměti pro příjem, počet bajtů, které chcete přijmout, a nezbytné SocketFlags.

Pokud používáte protokol orientovaný na připojení, musíte buď volat Connect za účelem navázání připojení ke vzdálenému hostiteli nebo Accept přijetí příchozího připojení před voláním Receive. Metoda Receive bude číst pouze data, která přicházejí ze vzdáleného hostitele vytvořeného Connect v metodě nebo Accept . Pokud používáte protokol bez připojení, můžete použít také metodu ReceiveFrom . ReceiveFrom vám umožní přijímat data přicházející z libovolného hostitele.

Pokud nejsou k dispozici žádná data pro čtení, Receive metoda bude blokovat, dokud nebudou data k dispozici, pokud nebyla nastavena hodnota časového limitu pomocí Socket.ReceiveTimeout. Pokud došlo k překročení hodnoty časového limitu Receive , volání vyvolá SocketExceptionchybu . Pokud jste v neblokovacím režimu a ve vyrovnávací paměti zásobníku protokolu nejsou k dispozici žádná data, Receive metoda se okamžitě dokončí a vyvolá SocketException. Pomocí vlastnosti můžete Available určit, jestli jsou data k dispozici pro čtení. Pokud Available je nenulová, zkuste operaci příjmu zopakovat.

Pokud používáte připojení orientované Socketna , Receive metoda přečte tolik dat, kolik je k dispozici, až do počtu bajtů určených parametrem size . Pokud vzdálený hostitel vypne Socket připojení s metodou Shutdown a všechna dostupná data byla přijata, Receive metoda se okamžitě dokončí a vrátí nula bajtů.

Pokud používáte bez Socketpřipojení , Receive přečte první datagram zařazený do fronty z cílové adresy, kterou zadáte v Connect metodě. Pokud je datagram, který obdržíte, větší než velikost parametru buffer , buffer vyplní se první část zprávy, nadbytečná data se ztratí a SocketException vyvolá se.

Poznámka

Pokud se zobrazí SocketException, použijte SocketException.ErrorCode vlastnost k získání konkrétního kódu chyby. Jakmile tento kód získáte, projděte si podrobný popis chyby v dokumentaci k rozhraní API windows Sockets verze 2 .

Poznámka

Tento člen poskytuje trasovací informace, když je ve vaší aplikaci povoleno trasování sítě. Další informace najdete v tématu Trasování sítě v rozhraní .NET Framework.

Viz také

Platí pro

Receive(Span<Byte>, SocketFlags)

Zdroj:
Socket.cs
Zdroj:
Socket.cs
Zdroj:
Socket.cs

Přijímá data z vazby Socket do vyrovnávací paměti příjmu pomocí zadané SocketFlags.

public:
 int Receive(Span<System::Byte> buffer, System::Net::Sockets::SocketFlags socketFlags);
public int Receive (Span<byte> buffer, System.Net.Sockets.SocketFlags socketFlags);
member this.Receive : Span<byte> * System.Net.Sockets.SocketFlags -> int
Public Function Receive (buffer As Span(Of Byte), socketFlags As SocketFlags) As Integer

Parametry

buffer
Span<Byte>

Rozsah bajtů, který je umístěním úložiště pro přijatá data.

socketFlags
SocketFlags

Bitové kombinace hodnot výčtu, která určuje chování při odesílání a příjmu.

Návraty

Počet přijatých bajtů.

Výjimky

Při pokusu o přístup k soketu došlo k chybě.

Volající v zásobníku volání nemá požadovaná oprávnění.

Poznámky

Metoda Receive načte data do parametru vyrovnávací paměti a vrátí počet bajtů, které byly úspěšně přečteny. Můžete volat Receive ze soketů orientovaných na připojení i ze soketů bez připojení.

Toto přetížení vyžaduje pouze poskytnutí vyrovnávací paměti pro příjem. Výchozí posun vyrovnávací paměti je 0, výchozí velikost je délka parametru vyrovnávací paměti a SocketFlags výchozí hodnota Noneje .

Pokud používáte protokol orientovaný na připojení, musíte buď volat Connect za účelem navázání připojení vzdáleného hostitele, nebo Accept přijetí příchozího připojení před voláním Receive. Metoda Receive bude číst pouze data, která přicházejí ze vzdáleného hostitele vytvořeného Connect v metodě nebo Accept . Pokud používáte protokol bez připojení, můžete použít také metodu ReceiveFrom . ReceiveFrom vám umožní přijímat data přicházející z libovolného hostitele.

Pokud nejsou k dispozici žádná data pro čtení, Receive metoda bude blokovat, dokud nebudou data k dispozici, pokud nebyla nastavena hodnota časového limitu pomocí Socket.ReceiveTimeout. Při překročení hodnoty časového limitu Receive volání vyvolá SocketExceptionchybu . Pokud jste v neblokovacím režimu a ve vyrovnávací paměti zásobníku Receive protokolu nejsou k dispozici žádná data, metoda se okamžitě dokončí a vyvolá SocketException. Pomocí vlastnosti můžete Available určit, jestli jsou data k dispozici pro čtení. Pokud Available je nenulová, zkuste operaci příjmu zopakovat.

Pokud používáte připojení orientované Socketna , Receive metoda přečte tolik dat, kolik je k dispozici, až do velikosti vyrovnávací paměti. Pokud vzdálený hostitel vypne Socket připojení s metodou Shutdown a všechna dostupná data byla přijata, Receive metoda se okamžitě dokončí a vrátí nula bajtů.

Pokud používáte bez Socketpřipojení , Receive přečte první datagram zařazený do fronty z cílové adresy, kterou zadáte v Connect metodě. Pokud je datagram, který obdržíte, větší než velikost parametru buffer , buffer vyplní se první část zprávy, nadbytečná data se ztratí a SocketException vyvolá se.

Poznámka

Pokud se zobrazí SocketException, použijte SocketException.ErrorCode vlastnost k získání konkrétního kódu chyby. Jakmile tento kód získáte, projděte si podrobný popis chyby v dokumentaci k rozhraní API windows Sockets verze 2 .

Tento člen poskytuje trasovací informace, když je ve vaší aplikaci povoleno trasování sítě. Další informace najdete v tématu Trasování sítě v rozhraní .NET Framework.

Viz také

Platí pro

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

Zdroj:
Socket.cs
Zdroj:
Socket.cs
Zdroj:
Socket.cs

Přijme zadaný počet bajtů z vazby Socket do zadané pozice posunu vyrovnávací paměti příjmu pomocí zadané SocketFlags.

public:
 int Receive(cli::array <System::Byte> ^ buffer, int offset, int size, System::Net::Sockets::SocketFlags socketFlags);
public int Receive (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags);
member this.Receive : byte[] * int * int * System.Net.Sockets.SocketFlags -> int
Public Function Receive (buffer As Byte(), offset As Integer, size As Integer, socketFlags As SocketFlags) As Integer

Parametry

buffer
Byte[]

Pole typu Byte , které je umístěním úložiště pro přijatá data.

offset
Int32

Umístění pro buffer uložení přijatých dat.

size
Int32

Počet bajtů, které se mají přijmout.

socketFlags
SocketFlags

Bitové kombinace SocketFlags hodnot.

Návraty

Počet přijatých bajtů.

Výjimky

buffer je null.

offset je menší než 0.

-nebo-

offsetje větší než délka .buffer

-nebo-

size je menší než 0.

-nebo-

size je větší než délka buffer minus hodnota parametru offset .

socketFlags není platná kombinace hodnot.

-nebo-

Vlastnost LocalEndPoint nebyla nastavena.

-nebo-

Při přístupu k systému dojde k chybě operačního Socketsystému.

Volající v zásobníku volání nemá požadovaná oprávnění.

Příklady

Následující příklad kódu určuje vyrovnávací paměť dat, posun, velikost a příznak soketu před přijetím dat v připojeném Socketobjektu .

// Displays sending with a connected socket
// using the overload that takes a buffer, offset, message size, and socket flags.
int SendReceiveTest4( Socket^ server )
{
   array<Byte>^ msg = Encoding::UTF8->GetBytes( "This is a test" );
   array<Byte>^ bytes = gcnew array<Byte>(256);
   try
   {
      
      // Blocks until send returns.
      int byteCount = server->Send( msg, 0, msg->Length, SocketFlags::None );
      Console::WriteLine( "Sent {0} bytes.", byteCount.ToString() );
      
      // Get reply from the server.
      byteCount = server->Receive( bytes, 0, server->Available,
         SocketFlags::None );
      if ( byteCount > 0 )
      {
         Console::WriteLine( Encoding::UTF8->GetString( bytes ) );
      }
   }
   catch ( SocketException^ e ) 
   {
      Console::WriteLine(  "{0} Error code: {1}.", e->Message, e->ErrorCode.ToString() );
      return (e->ErrorCode);
   }
   return 0;
}
// Displays sending with a connected socket
// using the overload that takes a buffer, offset, message size, and socket flags.
public static int SendReceiveTest4(Socket server)
{
    byte[] msg = Encoding.UTF8.GetBytes("This is a test");
    byte[] bytes = new byte[256];
    try
    {
        // Blocks until send returns.
        int byteCount = server.Send(msg, 0, msg.Length, SocketFlags.None);
        Console.WriteLine("Sent {0} bytes.", byteCount);

        // Get reply from the server.
        byteCount = server.Receive(bytes, 0, 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

Poznámky

Metoda Receive načte data do parametru vyrovnávací paměti a vrátí počet bajtů, které byly úspěšně přečteny. Můžete volat Receive ze soketů orientovaných na připojení i ze soketů bez připojení.

Pokud používáte protokol orientovaný na připojení, musíte buď volat Connect za účelem navázání připojení ke vzdálenému hostiteli nebo Accept přijetí příchozího připojení před voláním Receive. Metoda Receive bude číst pouze data, která přicházejí ze vzdáleného hostitele vytvořeného Connect v metodě nebo Accept . Pokud používáte protokol bez připojení, můžete použít také metodu ReceiveFrom . ReceiveFrom vám umožní přijímat data přicházející z libovolného hostitele.

Pokud nejsou k dispozici žádná data pro čtení, Receive metoda bude blokovat, dokud nebudou data k dispozici, pokud nebyla nastavena hodnota časového limitu pomocí Socket.ReceiveTimeout. Pokud došlo k překročení hodnoty časového limitu Receive , volání vyvolá SocketExceptionchybu . Pokud jste v neblokovacím režimu a ve vyrovnávací paměti zásobníku Receive protokolu nejsou k dispozici žádná data, metoda se okamžitě dokončí a vyvolá SocketException. Při pokusu o přístup k soketu došlo k chybě. Viz Poznámky níže. Pomocí vlastnosti můžete Available určit, jestli jsou data k dispozici pro čtení. Pokud Available je nenulová, zkuste operaci příjmu zopakovat.

Pokud používáte připojení orientované Socketna , Receive metoda přečte tolik dat, kolik je k dispozici, až do počtu bajtů určených parametrem size. Pokud vzdálený hostitel vypne Socket připojení s metodou Shutdown a všechna dostupná data byla přijata, Receive metoda se okamžitě dokončí a vrátí nula bajtů.

Pokud používáte bez Socketpřipojení , Receive přečte první datagram zařazený do fronty z cílové adresy, kterou zadáte v Connect metodě. Pokud je datagram, který obdržíte, větší než velikost parametru buffer , buffer vyplní se první část zprávy, nadbytečná data se ztratí a SocketException vyvolá se.

Poznámka

Pokud se zobrazí SocketException, použijte SocketException.ErrorCode vlastnost k získání konkrétního kódu chyby. Jakmile tento kód získáte, projděte si podrobný popis chyby v dokumentaci k rozhraní API windows Sockets verze 2 .

Poznámka

Tento člen poskytuje trasovací informace, když je ve vaší aplikaci povoleno trasování sítě. Další informace najdete v tématu Trasování sítě v rozhraní .NET Framework.

Viz také

Platí pro

Receive(Byte[], SocketFlags)

Zdroj:
Socket.cs
Zdroj:
Socket.cs
Zdroj:
Socket.cs

Přijímá data z vazby Socket do vyrovnávací paměti příjmu pomocí zadané SocketFlags.

public:
 int Receive(cli::array <System::Byte> ^ buffer, System::Net::Sockets::SocketFlags socketFlags);
public int Receive (byte[] buffer, System.Net.Sockets.SocketFlags socketFlags);
member this.Receive : byte[] * System.Net.Sockets.SocketFlags -> int
Public Function Receive (buffer As Byte(), socketFlags As SocketFlags) As Integer

Parametry

buffer
Byte[]

Pole typu Byte , které je umístěním úložiště pro přijatá data.

socketFlags
SocketFlags

Bitové kombinace SocketFlags hodnot.

Návraty

Počet přijatých bajtů.

Výjimky

buffer je null.

Při pokusu o přístup k soketu došlo k chybě.

Volající v zásobníku volání nemá požadovaná oprávnění.

Příklady

Následující příklad kódu určuje vyrovnávací paměť dat a SocketFlags pro příjem dat na připojeném Socket.

// Displays sending with a connected socket
// using the overload that takes a buffer and socket flags.
int SendReceiveTest2( Socket^ server )
{
   array<Byte>^ msg = Encoding::UTF8->GetBytes( "This is a test" );
   array<Byte>^ bytes = gcnew array<Byte>(256);
   try
   {
      // Blocks until send returns.
      int byteCount = server->Send( msg, SocketFlags::None );
      Console::WriteLine( "Sent {0} bytes.", byteCount.ToString() );
      
      // Get reply from the server.
      byteCount = server->Receive( bytes, SocketFlags::None );
      if ( byteCount > 0 )
      {
         Console::WriteLine( Encoding::UTF8->GetString( bytes ) );
      }
   }
   catch ( SocketException^ e ) 
   {
      Console::WriteLine( "{0} Error code: {1}.", e->Message, e->ErrorCode.ToString() );
      return (e->ErrorCode);
   }
   return 0;
}
// Displays sending with a connected socket
// using the overload that takes a buffer and socket flags.
public static int SendReceiveTest2(Socket server)
{
    byte[] msg = Encoding.UTF8.GetBytes("This is a test");
    byte[] bytes = new byte[256];
    try
    {
        // Blocks until send returns.
        int byteCount = server.Send(msg, SocketFlags.None);
        Console.WriteLine("Sent {0} bytes.", byteCount);

        // Get reply from the server.
        byteCount = server.Receive(bytes, SocketFlags.None);
        if (byteCount > 0)
            Console.WriteLine(Encoding.UTF8.GetString(bytes));
    }
    catch (SocketException e)
    {
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode);
        return (e.ErrorCode);
    }
    return 0;
}
' Displays sending with a connected socket
' using the overload that takes a buffer and socket flags.
Public Shared Function SendReceiveTest2(ByVal server As Socket) As Integer 
    Dim msg As Byte() = Encoding.UTF8.GetBytes("This is a test")
    Dim bytes(255) As Byte
    Try
        ' Blocks until send returns.
        Dim byteCount As Integer = server.Send(msg, SocketFlags.None)
        Console.WriteLine("Sent {0} bytes.", byteCount)
        
        ' Get reply from the server.
        byteCount = server.Receive(bytes, SocketFlags.None)
        If byteCount > 0 Then
            Console.WriteLine(Encoding.UTF8.GetString(bytes))
        End If
    Catch e As SocketException
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode)
        Return e.ErrorCode
    End Try
    Return 0

End Function 'SendReceiveTest2

Poznámky

Metoda Receive načte data do parametru vyrovnávací paměti a vrátí počet bajtů, které byly úspěšně přečteny. Můžete volat Receive ze soketů orientovaných na připojení i ze soketů bez připojení.

Toto přetížení vyžaduje pouze poskytnutí vyrovnávací paměti pro příjem a nezbytné SocketFlags. Výchozí posun vyrovnávací paměti je 0 a výchozí velikost je délka bajtového parametru.

Pokud používáte protokol orientovaný na připojení, musíte buď volat Connect za účelem navázání připojení ke vzdálenému hostiteli nebo Accept přijetí příchozího připojení před voláním Receive. Metoda Receive bude číst pouze data, která přicházejí ze vzdáleného hostitele vytvořeného Connect v metodě nebo Accept . Pokud používáte protokol bez připojení, můžete použít také metodu ReceiveFrom . ReceiveFrom vám umožní přijímat data přicházející z libovolného hostitele.

Pokud nejsou k dispozici žádná data pro čtení, metoda se zablokuje, Receive dokud nebudou data k dispozici. Pokud jste v neblokovacím režimu a ve vyrovnávací paměti zásobníku Receive protokolu nejsou k dispozici žádná data, metoda se okamžitě dokončí a vyvolá SocketException. Pomocí vlastnosti můžete Available určit, jestli jsou data k dispozici pro čtení. Pokud Available je nenulová, zkuste operaci příjmu zopakovat.

Pokud používáte připojení orientované Socketna , Receive metoda přečte tolik dat, kolik je k dispozici, až do velikosti vyrovnávací paměti. Pokud vzdálený hostitel vypne Socket připojení s metodou Shutdown a všechna dostupná data byla přijata, Receive metoda se okamžitě dokončí a vrátí nula bajtů.

Pokud používáte bez Socketpřipojení , Receive načte první vložený datagram z cílové adresy, kterou zadáte v Connect metodě. Pokud je datagram, který obdržíte, větší než velikost parametru buffer , buffer vyplní se první část zprávy, nadbytečná data se ztratí a SocketException vyvolá se.

Poznámka

Pokud se zobrazí SocketException, použijte SocketException.ErrorCode vlastnost k získání konkrétního kódu chyby. Jakmile tento kód získáte, projděte si podrobný popis chyby v dokumentaci k rozhraní API windows Sockets verze 2 .

Poznámka

Tento člen poskytuje trasovací informace, když je ve vaší aplikaci povoleno trasování sítě. Další informace najdete v tématu Trasování sítě v rozhraní .NET Framework.

Viz také

Platí pro

Receive(Span<Byte>)

Zdroj:
Socket.cs
Zdroj:
Socket.cs
Zdroj:
Socket.cs

Přijímá data z vazby Socket do vyrovnávací paměti pro příjem.

public:
 int Receive(Span<System::Byte> buffer);
public int Receive (Span<byte> buffer);
member this.Receive : Span<byte> -> int
Public Function Receive (buffer As Span(Of Byte)) As Integer

Parametry

buffer
Span<Byte>

Rozsah bajtů, který je umístěním úložiště pro přijatá data.

Návraty

Počet přijatých bajtů.

Výjimky

Při pokusu o přístup k soketu došlo k chybě.

Volající v zásobníku volání nemá požadovaná oprávnění.

Poznámky

Metoda Receive načte data do parametru vyrovnávací paměti a vrátí počet bajtů, které byly úspěšně přečteny. Můžete volat Receive ze soketů orientovaných na připojení i ze soketů bez připojení.

Toto přetížení vyžaduje pouze poskytnutí vyrovnávací paměti pro příjem. Výchozí posun vyrovnávací paměti je 0, výchozí velikost je délka parametru vyrovnávací paměti a SocketFlags výchozí hodnota Noneje .

Pokud používáte protokol orientovaný na připojení, musíte před voláním Receivevolat Connect připojení ke vzdálenému hostiteli nebo Accept přijmout příchozí připojení. Metoda Receive bude číst pouze data, která přicházejí ze vzdáleného hostitele vytvořeného Connect v metodě nebo Accept . Pokud používáte protokol bez připojení, můžete použít také metodu ReceiveFrom . ReceiveFrom vám umožní přijímat data přicházející z libovolného hostitele.

Pokud nejsou k dispozici žádná data pro čtení, Receive metoda bude blokovat, dokud nebudou data k dispozici, pokud nebyla nastavena hodnota časového limitu pomocí Socket.ReceiveTimeout. Při překročení hodnoty časového limitu Receive volání vyvolá SocketExceptionchybu . Pokud jste v neblokovacím režimu a ve vyrovnávací paměti zásobníku Receive protokolu nejsou k dispozici žádná data, metoda se okamžitě dokončí a vyvolá SocketException. Pomocí vlastnosti můžete Available určit, jestli jsou data k dispozici pro čtení. Pokud Available je nenulová, zkuste operaci příjmu zopakovat.

Pokud používáte připojení orientované Socketna , Receive metoda přečte tolik dat, kolik je k dispozici, až do velikosti vyrovnávací paměti. Pokud vzdálený hostitel vypne Socket připojení s metodou Shutdown a všechna dostupná data byla přijata, Receive metoda se okamžitě dokončí a vrátí nula bajtů.

Pokud používáte bez Socketpřipojení , Receive přečte první datagram zařazený do fronty z cílové adresy, kterou zadáte v Connect metodě. Pokud je datagram, který obdržíte, větší než velikost parametru buffer , buffer vyplní se první část zprávy, nadbytečná data se ztratí a SocketException vyvolá se.

Poznámka

Pokud se zobrazí SocketException, použijte SocketException.ErrorCode vlastnost k získání konkrétního kódu chyby. Jakmile tento kód získáte, projděte si podrobný popis chyby v dokumentaci k rozhraní API windows Sockets verze 2 .

Tento člen poskytuje trasovací informace, když je ve vaší aplikaci povoleno trasování sítě. Další informace najdete v tématu Trasování sítě v rozhraní .NET Framework.

Viz také

Platí pro

Receive(IList<ArraySegment<Byte>>)

Zdroj:
Socket.cs
Zdroj:
Socket.cs
Zdroj:
Socket.cs

Přijímá data z vazby Socket do seznamu příjmových vyrovnávacích pamětí.

public:
 int Receive(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers);
public int Receive (System.Collections.Generic.IList<ArraySegment<byte>> buffers);
member this.Receive : System.Collections.Generic.IList<ArraySegment<byte>> -> int
Public Function Receive (buffers As IList(Of ArraySegment(Of Byte))) As Integer

Parametry

buffers
IList<ArraySegment<Byte>>

Seznam ArraySegment<T>typů s Byte , který obsahuje přijatá data.

Návraty

Počet přijatých bajtů

Výjimky

Parametr buffer je null.

Při pokusu o přístup k soketu došlo k chybě.

Poznámky

Tato metoda načte data do parametru buffers a vrátí počet bajtů, které byly úspěšně přečteny. Můžete volat ze soketů orientovaných na připojení i ze soketů bez připojení.

Toto přetížení vyžaduje, abyste zadali jednu nebo více příjmových vyrovnávacích pamětí.

Pokud používáte protokol orientovaný na připojení, musíte buď volat Connect za účelem navázání připojení ke vzdálenému hostiteli nebo Accept přijetí příchozího připojení před voláním Receive. Metoda Receive bude číst pouze data, která přicházejí z připojení vzdáleného hostitele vytvořeného Connect v metodě nebo Accept . Pokud používáte protokol bez připojení, můžete použít také metodu ReceiveFrom . ReceiveFrom vám umožní přijímat data přicházející z libovolného hostitele.

Pokud nejsou k dispozici žádná data pro čtení, Receive metoda bude blokovat, dokud nebudou k dispozici, pokud nebyla nastavena hodnota časového limitu pomocí Socket.ReceiveTimeout. Pokud dojde k překročení hodnoty časového limitu Receive , volání vyvolá SocketExceptionchybu . Pokud jste v neblokovacím režimu a ve vyrovnávací paměti zásobníku protokolu nejsou k dispozici žádná data, Receive metoda se okamžitě dokončí a vyvolá SocketException. Pomocí vlastnosti můžete Available určit, jestli jsou data dostupná ke čtení. Pokud Available je nenulová, zkuste operaci příjmu zopakovat.

Pokud používáte připojení orientované Socket, Receive metoda načte tolik dat, kolik je k dispozici, až do velikosti vyrovnávací paměti. Pokud vzdálený hostitel ukončí Socket připojení pomocí Shutdown metody a byla přijata všechna dostupná data, Receive metoda se okamžitě dokončí a vrátí nula bajtů.

Pokud používáte bez Socketpřipojení , Receive načte první vložený datagram z cílové adresy, kterou zadáte v Connect metodě . Pokud je datagram, který obdržíte, větší než velikost parametru buffers , buffers vyplní se první část zprávy, nadbytečná data se ztratí a SocketException vyvolá se .

Poznámka

Pokud se zobrazí SocketException, použijte SocketException.ErrorCode vlastnost k získání konkrétního kódu chyby. Jakmile tento kód získáte, projděte si podrobný popis chyby v dokumentaci k rozhraní API rozhraní Windows Sockets verze 2 .

Poznámka Tento člen vypíše informace o trasování, když ve své aplikaci povolíte trasování sítě. Další informace najdete v tématu Trasování sítě v rozhraní .NET Framework.

Platí pro

Receive(Byte[])

Zdroj:
Socket.cs
Zdroj:
Socket.cs
Zdroj:
Socket.cs

Přijímá data z vazby Socket do vyrovnávací paměti pro příjem.

public:
 int Receive(cli::array <System::Byte> ^ buffer);
public int Receive (byte[] buffer);
member this.Receive : byte[] -> int
Public Function Receive (buffer As Byte()) As Integer

Parametry

buffer
Byte[]

Pole typu Byte , které je umístěním úložiště pro přijatá data.

Návraty

Počet přijatých bajtů

Výjimky

buffer je null.

Při pokusu o přístup k soketu došlo k chybě.

Volající v zásobníku volání nemá požadovaná oprávnění.

Příklady

Následující příklad kódu přijímá data v připojeném Socket.

// Displays sending with a connected socket
// using the overload that takes a buffer.
int SendReceiveTest1( Socket^ server )
{
   array<Byte>^ msg = Encoding::UTF8->GetBytes( "This is a test" );
   array<Byte>^ bytes = gcnew array<Byte>(256);
   try
   {
      // Blocks until send returns.
      int byteCount = server->Send( msg );
      Console::WriteLine( "Sent {0} bytes.", byteCount.ToString() );
      
      // Get reply from the server.
      byteCount = server->Receive( bytes );
      if ( byteCount > 0 )
      {
         Console::WriteLine( Encoding::UTF8->GetString( bytes ) );
      }
   }
   catch ( SocketException^ e ) 
   {
      Console::WriteLine( "{0} Error code: {1}.", e->Message, e->ErrorCode.ToString() );
      return ( e->ErrorCode );
   }
   return 0;
}
// Displays sending with a connected socket
// using the overload that takes a buffer.
public static int SendReceiveTest1(Socket server)
{
    byte[] msg = Encoding.UTF8.GetBytes("This is a test");
    byte[] bytes = new byte[256];
    try
    {
        // Blocks until send returns.
        int i = server.Send(msg);
        Console.WriteLine("Sent {0} bytes.", i);

        // Get reply from the server.
        i = server.Receive(bytes);
        Console.WriteLine(Encoding.UTF8.GetString(bytes));
    }
    catch (SocketException e)
    {
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode);
        return (e.ErrorCode);
    }
    return 0;
}
' Displays sending with a connected socket
' using the overload that takes a buffer.
Public Shared Function SendReceiveTest1(ByVal server As Socket) As Integer 
    Dim msg As Byte() = Encoding.UTF8.GetBytes("This is a test")
    Dim bytes(255) As Byte
    Try
        ' Blocks until send returns.
        Dim i As Integer = server.Send(msg)
        Console.WriteLine("Sent {0} bytes.", i)
        
        ' Get reply from the server.
        i = server.Receive(bytes)
        Console.WriteLine(Encoding.UTF8.GetString(bytes))
    Catch e As SocketException
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode)
        Return e.ErrorCode
    End Try
    Return 0

End Function 'SendReceiveTest1

Poznámky

Metoda Receive načte data do parametru vyrovnávací paměti a vrátí počet bajtů, které byly úspěšně přečtené. Můžete volat Receive ze soketů orientovaných na připojení i bez připojení.

Toto přetížení vyžaduje pouze poskytnutí vyrovnávací paměti pro příjem. Výchozí posun vyrovnávací paměti je 0, výchozí velikost je délka parametru vyrovnávací paměti a SocketFlags výchozí hodnota Noneje .

Pokud používáte protokol orientovaný na připojení, musíte buď volat Connect za účelem navázání připojení ke vzdálenému hostiteli, nebo Accept pro přijetí příchozího připojení před voláním Receive. Metoda Receive bude číst pouze data, která přicházejí ze vzdáleného hostitele vytvořeného Connect v metodě nebo Accept . Pokud používáte protokol bez připojení, můžete použít také metodu ReceiveFrom . ReceiveFrom vám umožní přijímat data přicházející z libovolného hostitele.

Pokud nejsou k dispozici žádná data pro čtení, Receive metoda bude blokovat, dokud nebudou k dispozici, pokud nebyla nastavena hodnota časového limitu pomocí Socket.ReceiveTimeout. Pokud dojde k překročení hodnoty časového limitu Receive , volání vyvolá SocketExceptionchybu . Pokud jste v neblokovacím režimu a ve vyrovnávací paměti zásobníku protokolu nejsou k dispozici žádná data, Receive metoda se okamžitě dokončí a vyvolá SocketException. Pomocí vlastnosti můžete Available určit, jestli jsou data dostupná ke čtení. Pokud Available je nenulová, zkuste operaci příjmu zopakovat.

Pokud používáte připojení orientované Socket, Receive metoda načte tolik dat, kolik je k dispozici, až do velikosti vyrovnávací paměti. Pokud vzdálený hostitel ukončí Socket připojení pomocí Shutdown metody a byla přijata všechna dostupná data, Receive metoda se okamžitě dokončí a vrátí nula bajtů.

Pokud používáte bez Socketpřipojení , Receive načte první datagram zařazený do fronty z cílové adresy, kterou zadáte v Connect metodě . Pokud je datagram, který obdržíte, větší než velikost parametru buffer , buffer vyplní se první část zprávy, nadbytečná data se ztratí a SocketException vyvolá se .

Poznámka

Pokud se zobrazí SocketException, použijte SocketException.ErrorCode vlastnost k získání konkrétního kódu chyby. Jakmile tento kód získáte, projděte si podrobný popis chyby v dokumentaci k rozhraní API rozhraní Windows Sockets verze 2 .

Poznámka

Tento člen poskytuje trasovací informace, když je ve vaší aplikaci povoleno trasování sítě. Další informace najdete v tématu Trasování sítě v rozhraní .NET Framework.

Viz také

Platí pro

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

Zdroj:
Socket.cs
Zdroj:
Socket.cs
Zdroj:
Socket.cs

Přijímá data z vazby Socket do seznamu příjmových vyrovnávacích pamětí pomocí zadaného SocketFlags.

public:
 int Receive(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers, System::Net::Sockets::SocketFlags socketFlags);
public int Receive (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags);
member this.Receive : System.Collections.Generic.IList<ArraySegment<byte>> * System.Net.Sockets.SocketFlags -> int
Public Function Receive (buffers As IList(Of ArraySegment(Of Byte)), socketFlags As SocketFlags) As Integer

Parametry

buffers
IList<ArraySegment<Byte>>

Seznam s ArraySegment<T>typu Byte , který obsahuje přijatá data.

socketFlags
SocketFlags

Bitové kombinace SocketFlags hodnot.

Návraty

Počet přijatých bajtů

Výjimky

buffers je null.

-nebo-

buffers. Počet je nula.

Při pokusu o přístup k soketu došlo k chybě.

Příklady

Následující příklad kódu ukazuje, jak přijímat data v připojeném Socket.


// Build the buffers for the receive.
List<ArraySegment<Byte> >^ receiveBuffers = 
    gcnew List<ArraySegment<Byte> >(2);

array<Byte>^ bigBuffer = gcnew array<Byte>(1024);

// Specify the first buffer segment (2 bytes, starting 
// at the 4th element of bigBuffer)
receiveBuffers->Add(ArraySegment<Byte>(bigBuffer, 4, 2));

// Specify the second buffer segment (500 bytes, starting
// at the 20th element of bigBuffer)
receiveBuffers->Add(
    ArraySegment<Byte>(bigBuffer, 20, 500));

tcpSocket->Receive(receiveBuffers);

Console::WriteLine("{0}", 
    asciiEncoding->GetString(bigBuffer));

// Build the buffers for the receive.
List<ArraySegment<byte>> recvBuffers =
                         new List<ArraySegment<byte>>(2);

byte[] bigBuffer = new byte[1024];

// Specify the first buffer segment (2 bytes, starting
// at the 4th element of bigBuffer)
recvBuffers.Add(new ArraySegment<byte>(bigBuffer, 4, 2));

// Specify the second buffer segment (500 bytes, starting
// at the 20th element of bigBuffer)
recvBuffers.Add(new ArraySegment<byte>(bigBuffer, 20, 500));

int bytesReceived = mySocket.Receive(recvBuffers);

Console.WriteLine("{0}", ASCII.GetString(bigBuffer));

Poznámky

Tato metoda načte data do parametru buffers a vrátí počet bajtů, které byly úspěšně přečtené. Můžete volat ze soketů orientovaných na připojení i bez připojení.

Toto přetížení vyžaduje, abyste poskytli jednu nebo více příjmových vyrovnávacích pamětí. Výchozí SocketFlags hodnota je None.

Pokud používáte protokol orientovaný na připojení, musíte buď volat Connect za účelem navázání připojení ke vzdálenému hostiteli, nebo Accept pro přijetí příchozího připojení před voláním Receive. Metoda Receive bude číst pouze data, která přicházejí z připojení vzdáleného hostitele vytvořeného Connect v metodě nebo Accept . Pokud používáte protokol bez připojení, můžete použít také metodu ReceiveFrom . ReceiveFrom vám umožní přijímat data přicházející z libovolného hostitele.

Pokud nejsou k dispozici žádná data pro čtení, Receive metoda bude blokovat, dokud nebudou k dispozici, pokud nebyla nastavena hodnota časového limitu pomocí Socket.ReceiveTimeout. Pokud dojde k překročení hodnoty časového limitu Receive , volání vyvolá SocketException. Pokud jste v neblokovacím režimu a ve vyrovnávací paměti zásobníku protokolu nejsou k dispozici žádná data, Receive metoda se okamžitě dokončí a vyvolá SocketException. Pomocí vlastnosti můžete Available určit, jestli jsou data dostupná ke čtení. Pokud Available je nenulová, zkuste operaci příjmu zopakovat.

Pokud používáte připojení orientované Socket, Receive metoda načte tolik dat, kolik je k dispozici, až do velikosti vyrovnávací paměti. Pokud vzdálený hostitel ukončí Socket připojení pomocí Shutdown metody a byla přijata všechna dostupná data, Receive metoda se okamžitě dokončí a vrátí nula bajtů.

Pokud používáte bez Socketpřipojení , Receive načte první vložený datagram z cílové adresy, kterou zadáte v Connect metodě . Pokud je datagram, který obdržíte, větší než velikost parametru buffers , buffers vyplní se první část zprávy, nadbytečná data se ztratí a SocketException vyvolá se .

Poznámka

Pokud se zobrazí SocketException, použijte SocketException.ErrorCode vlastnost k získání konkrétního kódu chyby. Jakmile tento kód získáte, projděte si podrobný popis chyby v dokumentaci k rozhraní API rozhraní Windows Sockets verze 2 .

Poznámka

Tento člen poskytuje trasovací informace, když je ve vaší aplikaci povoleno trasování sítě. Další informace najdete v tématu Trasování sítě v rozhraní .NET Framework.

Viz také

Platí pro