Socket.Receive Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Přijímá data z vázaného Socketobjektu .
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ého SocketFlags. |
Receive(Span<Byte>, SocketFlags, SocketError) |
Přijímá data z vazby Socket do vyrovnávací paměti příjmu pomocí zadaného SocketFlags. |
Receive(IList<ArraySegment<Byte>>, SocketFlags, SocketError) |
Přijímá data z vazby Socket do seznamu vyrovnávacích pamětí příjmu 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ého SocketFlags. |
Receive(Span<Byte>, SocketFlags) |
Přijímá data z vazby Socket do vyrovnávací paměti příjmu pomocí zadaného 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ého SocketFlags. |
Receive(Byte[], SocketFlags) |
Přijímá data z vazby Socket do vyrovnávací paměti příjmu pomocí zadaného 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í příjmu. |
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 vyrovnávacích pamětí příjmu pomocí zadaného SocketFlags. |
Receive(Byte[], Int32, Int32, SocketFlags, SocketError)
Přijímá data z vazby Socket do vyrovnávací paměti příjmu pomocí zadaného 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
- 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-
offset
je větší než délka buffer
.
-nebo-
size
je menší než 0.
-nebo-
size
je větší než délka buffer
mínus hodnoty parametru offset
.
socketFlags
není platná kombinace hodnot.
-nebo-
Vlastnost LocalEndPoint není nastavena.
-nebo-
Při přístupu k Socketsouboru .
Ta Socket byla uzavřena.
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é se úspěšně přečetly. Můžete volat Receive z soketů orientovaných na připojení i bez připojení.
Pokud používáte protokol orientovaný na připojení, musíte buď zavolat Connect navázat připojení vzdáleného hostitele, nebo Accept přijmout příchozí připojení před voláním Receive. Tato Receive metoda bude číst pouze data, která přicházejí ze vzdáleného hostitele vytvořeného v metoděConnect.Accept Pokud používáte protokol bez připojení, můžete tuto metodu ReceiveFrom použít také. 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 zablokuje, Receive dokud nebudou k dispozici data, pokud nebyla nastavena hodnota časového limitu pomocí Socket.ReceiveTimeout. Pokud byla překročena hodnota časového limitu, Receive volání vyvolá chybu SocketException. Pokud jste v neblokovacím režimu a v vyrovnávací paměti zásobníku protokolu nejsou k dispozici žádná data, Receive 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 není nula, zkuste operaci příjmu zopakovat.
Pokud používáte připojení orientované Socketna připojení, Receive metoda přečte tolik dat, kolik je k dispozici, až do počtu bajtů zadaných parametrem velikosti. Pokud vzdálený hostitel vypne Socket připojení k Shutdown metodě a všechna dostupná data byla přijata, Receive metoda se dokončí okamžitě a vrátí nula bajtů.
Pokud používáte připojení bez Socketpřipojení, Receive přečte první datagram ve frontě z cílové adresy, kterou zadáte v Connect metodě. Pokud je datový diagram, který obdržíte, větší než velikost parametru buffer
, buffer
vyplní první část zprávy, dojde ke ztrátě nadbytečných dat a SocketException vyvolá se.
Poznámka
Pokud obdržíte kód chyby SocketException, použijte SocketException.ErrorCode vlastnost k získání konkrétního kódu chyby. Jakmile tento kód získáte, přečtěte si dokumentaci k kódu chyby rozhraní API Windows Sockets verze 2, kde najdete podrobný popis chyby.
Poznámka
Tento člen poskytuje trasovací informace, když je ve vaší aplikaci povoleno trasování sítě. Další informace naleznete v tématu Trasování sítě v rozhraní .NET Framework.
Viz také
- Connect(EndPoint)
- ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)
- Available
- Shutdown(SocketShutdown)
- Close()
Platí pro
Receive(Span<Byte>, SocketFlags, SocketError)
Přijímá data z vazby Socket do vyrovnávací paměti příjmu pomocí zadaného 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
- 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ě.
Ta Socket byla uzavřena.
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é se úspěšně přečetly. Můžete volat Receive z 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í hodnota posunu vyrovnávací paměti na hodnotu 0, výchozí velikost je délka parametru vyrovnávací paměti a SocketFlags výchozí Nonehodnota je .
Pokud používáte protokol orientovaný na připojení, musíte buď volat Connect navázat připojení vzdáleného hostitele, nebo Accept přijmout příchozí připojení před voláním Receive. Tato Receive metoda bude číst pouze data, která přicházejí ze vzdáleného hostitele vytvořeného v metoděConnect.Accept Pokud používáte protokol bez připojení, můžete tuto metodu ReceiveFrom použít také. 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 zablokuje, Receive dokud nebudou k dispozici data, pokud nebyla nastavena hodnota časového limitu pomocí Socket.ReceiveTimeout. Když dojde k překročení hodnoty časového limitu Receive , volání vyvolá chybu SocketException. Pokud jste v neblokačním režimu a v vyrovnávací paměti zásobníku protokolu nejsou k dispozici žádná data, Receive metoda se okamžitě dokončí a vyvolá SocketExceptionchybu . Pomocí vlastnosti můžete Available určit, jestli jsou data k dispozici pro čtení. Pokud Available není nula, zkuste operaci příjmu zopakovat.
Pokud používáte připojení orientované Socketna připojení, 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í k Shutdown metodě a všechna dostupná data byla přijata, Receive metoda se dokončí okamžitě a vrátí nula bajtů.
Pokud používáte připojení bez Socketpřipojení, Receive přečte první datagram ve frontě z cílové adresy, kterou zadáte v Connect metodě. Pokud je datový diagram, který obdržíte, větší než velikost parametru buffer
, buffer
vyplní první část zprávy, dojde ke ztrátě nadbytečných dat a SocketException vyvolá se.
Poznámka
Pokud obdržíte kód chyby SocketException, použijte SocketException.ErrorCode vlastnost k získání konkrétního kódu chyby. Jakmile tento kód získáte, přečtěte si dokumentaci k kódu chyby rozhraní API Windows Sockets verze 2, kde najdete podrobný popis chyby.
Poznámka
Tento člen poskytuje trasovací informace, když je ve vaší aplikaci povoleno trasování sítě. Další informace naleznete v tématu Trasování sítě v rozhraní .NET Framework.
Viz také
- Connect(EndPoint)
- ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)
- Available
- Shutdown(SocketShutdown)
- Close()
Platí pro
Receive(IList<ArraySegment<Byte>>, SocketFlags, SocketError)
Důležité
Toto rozhraní API neodpovídá specifikaci CLS.
- Alternativa odpovídající specifikaci CLS
- System.Net.Sockets.Socket.Receive(Byte[], SocketFlags)
Přijímá data z vazby Socket do seznamu vyrovnávacích pamětí příjmu 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);
[System.CLSCompliant(false)]
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
[<System.CLSCompliant(false)>]
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ů Byte obsahujících 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ů
- Atributy
Výjimky
Při pokusu o přístup k soketu došlo k chybě.
Ta Socket byla uzavřena.
Poznámky
Tato metoda načte data do parametru buffers
a vrátí počet bajtů úspěšně načtených. Můžete volat z soketů orientovaných na připojení i bez připojení.
Toto přetížení vyžaduje, abyste zadali jednu nebo více vyrovnávacích pamětí příjmu. Výchozí SocketFlags hodnota je None.
Pokud používáte protokol orientovaný na připojení, musíte buď zavolat Connect navázat připojení vzdáleného hostitele, nebo Accept přijmout příchozí připojení před voláním Receive. Tato Receive metoda bude číst pouze data, která přicházejí z připojení vzdáleného hostitele vytvořeného v metoděConnect.Accept Pokud používáte protokol bez připojení, můžete tuto metodu ReceiveFrom použít také. 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 zablokuje, Receive dokud nebudou k dispozici data, pokud nebyla nastavena hodnota časového limitu pomocí Socket.ReceiveTimeout. Pokud byla překročena hodnota časového limitu, Receive volání vyvolá chybu SocketException. Pokud jste v neblokovacím režimu a v 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 není nula, zkuste operaci příjmu zopakovat.
Pokud používáte připojení orientované Socketna připojení, 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í k Shutdown metodě a všechna dostupná data byla přijata, Receive metoda se dokončí okamžitě a vrátí nula bajtů.
Pokud používáte připojení bez Socketpřipojení,Receive přečte první datagram ve frontě z cílové adresy, kterou zadáte v Connect metodě. Pokud je datový diagram, který obdržíte, větší než velikost parametru buffers
, buffers
vyplní první část zprávy, dojde ke ztrátě nadbytečných dat a SocketException vyvolá se.
Poznámka
Pokud obdržíte kód chyby SocketException, použijte SocketException.ErrorCode vlastnost k získání konkrétního kódu chyby. Jakmile tento kód získáte, přečtěte si dokumentaci k kódu chyby rozhraní API Windows Sockets verze 2, kde najdete podrobný popis chyby.
Poznámka
Tento člen poskytuje trasovací informace, když je ve vaší aplikaci povoleno trasování sítě. Další informace naleznete v tématu Trasování sítě v rozhraní .NET Framework.
Viz také
- Connect(EndPoint)
- ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)
- Available
- Shutdown(SocketShutdown)
- Close()
Platí pro
Receive(Byte[], Int32, SocketFlags)
Přijme zadaný počet bajtů dat z vazby Socket do vyrovnávací paměti příjmu pomocí zadaného 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
- 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
.
size
překračuje velikost buffer
.
Při pokusu o přístup k soketu došlo k chybě.
Ta Socket byla uzavřena.
Volající v zásobníku volání nemá požadovaná oprávnění.
Příklady
Následující příkaz obdrží data nalezená v buffer
souboru a 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ů úspěšně načtených. Můžete volat Receive z 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, počet bajtů, které chcete přijmout, a nezbytné SocketFlags.
Pokud používáte protokol orientovaný na připojení, musíte buď zavolat Connect navázat připojení vzdáleného hostitele, nebo Accept přijmout příchozí připojení před voláním Receive. Tato Receive metoda bude číst pouze data, která přicházejí ze vzdáleného hostitele vytvořeného v metoděConnect.Accept Pokud používáte protokol bez připojení, můžete tuto metodu ReceiveFrom použít také. 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 zablokuje, Receive dokud nebudou k dispozici data, pokud nebyla nastavena hodnota časového limitu pomocí Socket.ReceiveTimeout. Pokud byla překročena hodnota časového limitu, Receive volání vyvolá chybu SocketException. Pokud jste v neblokovacím režimu a v 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 není nula, zkuste operaci příjmu zopakovat.
Pokud používáte připojení orientované Socketna připojení, 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í k Shutdown metodě a všechna dostupná data byla přijata, Receive metoda se dokončí okamžitě a vrátí nula bajtů.
Pokud používáte připojení bez Socketpřipojení, Receive přečte první datagram ve frontě z cílové adresy, kterou zadáte v Connect metodě. Pokud je datový diagram, který obdržíte, větší než velikost parametru buffer
, buffer
vyplní první část zprávy, dojde ke ztrátě nadbytečných dat a SocketException vyvolá se.
Poznámka
Pokud obdržíte kód chyby SocketException, použijte SocketException.ErrorCode vlastnost k získání konkrétního kódu chyby. Jakmile tento kód získáte, přečtěte si dokumentaci k kódu chyby rozhraní API Windows Sockets verze 2, kde najdete podrobný popis chyby.
Poznámka
Tento člen poskytuje trasovací informace, když je ve vaší aplikaci povoleno trasování sítě. Další informace naleznete v tématu Trasování sítě v rozhraní .NET Framework.
Viz také
- Connect(EndPoint)
- ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)
- Available
- Shutdown(SocketShutdown)
- Close()
Platí pro
Receive(Span<Byte>, SocketFlags)
Přijímá data z vazby Socket do vyrovnávací paměti příjmu pomocí zadaného 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
- 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ě.
Ta Socket byla uzavřena.
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é se úspěšně přečetly. Můžete volat Receive z 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í hodnota posunu vyrovnávací paměti na hodnotu 0, výchozí velikost je délka parametru vyrovnávací paměti a SocketFlags výchozí Nonehodnota je .
Pokud používáte protokol orientovaný na připojení, musíte buď volat Connect navázat připojení vzdáleného hostitele, nebo Accept přijmout příchozí připojení před voláním Receive. Tato Receive metoda bude číst pouze data, která přicházejí ze vzdáleného hostitele vytvořeného v metoděConnect.Accept Pokud používáte protokol bez připojení, můžete tuto metodu ReceiveFrom použít také. 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 zablokuje, Receive dokud nebudou k dispozici data, pokud nebyla nastavena hodnota časového limitu pomocí Socket.ReceiveTimeout. Když dojde k překročení hodnoty časového limitu Receive , volání vyvolá chybu SocketException. Pokud jste v neblokovacím režimu a v vyrovnávací paměti zásobníku protokolu nejsou k dispozici žádná data, Receive metoda se okamžitě dokončí a vyvolá SocketExceptionchybu . Pomocí vlastnosti můžete Available určit, jestli jsou data k dispozici pro čtení. Pokud Available není nula, zkuste operaci příjmu zopakovat.
Pokud používáte připojení orientované Socketna připojení, 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í k Shutdown metodě a všechna dostupná data byla přijata, Receive metoda se dokončí okamžitě a vrátí nula bajtů.
Pokud používáte připojení bez Socketpřipojení, Receive přečte první datagram ve frontě z cílové adresy, kterou zadáte v Connect metodě. Pokud je datový diagram, který obdržíte, větší než velikost parametru buffer
, buffer
vyplní se první částí zprávy, dojde ke ztrátě nadbytečných dat a vyvolá SocketException se.
Poznámka
Pokud obdržíte kód chyby SocketException, použijte SocketException.ErrorCode vlastnost k získání konkrétního kódu chyby. Jakmile tento kód získáte, přečtěte si dokumentaci k kódu chyby rozhraní API Windows Sockets verze 2, kde najdete podrobný popis chyby.
Tento člen poskytuje trasovací informace, když je ve vaší aplikaci povoleno trasování sítě. Další informace naleznete v tématu Trasování sítě v rozhraní .NET Framework.
Viz také
- Connect(EndPoint)
- ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)
- Available
- Shutdown(SocketShutdown)
- Close()
Platí pro
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ého 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
- offset
- Int32
Umístění buffer
pro 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-
offset
je větší než délka buffer
.
-nebo-
size
je menší než 0.
-nebo-
size
je větší než délka buffer
mínus hodnoty parametru offset
.
socketFlags
není platná kombinace hodnot.
-nebo-
Vlastnost LocalEndPoint nebyla nastavena.
-nebo-
Při přístupu k Socketsouboru .
Ta Socket byla uzavřena.
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říjmem dat na připojeném .Socket
// 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é se úspěšně přečetly. Můžete volat Receive z soketů orientovaných na připojení i bez připojení.
Pokud používáte protokol orientovaný na připojení, musíte buď zavolat Connect navázat připojení vzdáleného hostitele, nebo Accept přijmout příchozí připojení před voláním Receive. Tato Receive metoda bude číst pouze data, která přicházejí ze vzdáleného hostitele vytvořeného v metoděConnect.Accept Pokud používáte protokol bez připojení, můžete tuto metodu ReceiveFrom použít také. 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 zablokuje, Receive dokud nebudou k dispozici data, pokud nebyla nastavena hodnota časového limitu pomocí Socket.ReceiveTimeout. Pokud byla překročena hodnota časového limitu, Receive volání vyvolá chybu SocketException. Pokud jste v neblokovacím režimu a v vyrovnávací paměti zásobníku protokolu nejsou k dispozici žádná data, Receive 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 není nula, zkuste operaci příjmu zopakovat.
Pokud používáte připojení orientované Socketna připojení, Receive metoda přečte tolik dat, kolik je k dispozici, až do počtu bajtů zadaných parametrem velikosti. Pokud vzdálený hostitel vypne Socket připojení k Shutdown metodě a všechna dostupná data byla přijata, Receive metoda se dokončí okamžitě a vrátí nula bajtů.
Pokud používáte připojení bez Socketpřipojení, Receive přečte první datagram ve frontě z cílové adresy, kterou zadáte v Connect metodě. Pokud je datový diagram, který obdržíte, větší než velikost parametru buffer
, buffer
vyplní první část zprávy, dojde ke ztrátě nadbytečných dat a SocketException vyvolá se.
Poznámka
Pokud obdržíte kód chyby SocketException, použijte SocketException.ErrorCode vlastnost k získání konkrétního kódu chyby. Jakmile tento kód získáte, přečtěte si dokumentaci k kódu chyby rozhraní API Windows Sockets verze 2, kde najdete podrobný popis chyby.
Poznámka
Tento člen poskytuje trasovací informace, když je ve vaší aplikaci povoleno trasování sítě. Další informace naleznete v tématu Trasování sítě v rozhraní .NET Framework.
Viz také
- Connect(EndPoint)
- ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)
- Available
- Shutdown(SocketShutdown)
- Close()
Platí pro
Receive(Byte[], SocketFlags)
Přijímá data z vazby Socket do vyrovnávací paměti příjmu pomocí zadaného 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
- 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ě.
Ta Socket byla uzavřena.
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 v 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 načte Receive data do parametru vyrovnávací paměti a vrátí počet bajtů úspěšně načtených. Můžete volat Receive z 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 a potřebné SocketFlags. Vyrovnávací paměť se standardně posune na hodnotu 0 a velikost se ve výchozím nastavení nastaví na délku parametru bajtu.
Pokud používáte protokol orientovaný na připojení, musíte buď zavolat Connect navázat připojení vzdáleného hostitele, nebo Accept přijmout příchozí 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ě.Accept Pokud používáte protokol bez připojení, můžete také použít 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 bude blokovat, dokud nebudou Receive k dispozici data. Pokud jste v neblokačním režimu a v vyrovnávací paměti zásobníku protokolů nejsou k dispozici žádná data, Receive metoda se okamžitě dokončí a vyvolá SocketException. Vlastnost můžete použít Available k určení, jestli jsou data k dispozici pro čtení. Pokud Available není nula, zkuste operaci příjmu zopakovat.
Pokud používáte připojení orientované Socketna připojení, 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í k Shutdown metodě 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í výčtový datovýgram z cílové adresy, kterou zadáte v Connect metodě. Pokud je datovýgram, který obdržíte, větší než velikost buffer
parametru, buffer
vyplní první část zprávy, dojde ke ztrátě nadbytečných dat a SocketException vyvolá se.
Poznámka
Pokud se zobrazí zpráva SocketException, použijte SocketException.ErrorCode vlastnost k získání konkrétního kódu chyby. Po získání tohoto kódu si projděte dokumentaci k chybě rozhraní API verze Windows Sockets verze 2, kde najdete podrobný popis chyby.
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é
- Connect(EndPoint)
- ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)
- Available
- Shutdown(SocketShutdown)
- Close()
Platí pro
Receive(Span<Byte>)
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
Návraty
Počet přijatých bajtů
Výjimky
Při pokusu o přístup k soketu došlo k chybě.
Byla Socket uzavřena.
Volající v zásobníku volání nemá požadovaná oprávnění.
Poznámky
Metoda načte Receive data do parametru vyrovnávací paměti a vrátí počet bajtů úspěšně načtených. Můžete volat Receive z 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. Posun vyrovnávací paměti je výchozí na hodnotu 0, výchozí velikost na délku parametru vyrovnávací paměti a SocketFlags výchozí hodnota je None.
Pokud používáte protokol orientovaný na připojení, musíte buď volat Connect navázat připojení vzdáleného hostitele, nebo Accept přijmout příchozí 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ě.Accept Pokud používáte protokol bez připojení, můžete také použít 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 bude blokovat, dokud nebudou Receive k dispozici data, pokud nebyla nastavena hodnota časového limitu pomocí Socket.ReceiveTimeout. Když dojde k překročení hodnoty časového limitu Receive , volání vyvolá SocketExceptionchybu . Pokud jste v neblokačním režimu a v vyrovnávací paměti zásobníku protokolů nejsou k dispozici žádná data, Receive metoda se okamžitě dokončí a vyvolá SocketException. Vlastnost můžete použít Available k určení, jestli jsou data k dispozici pro čtení. Pokud Available není nula, zkuste operaci příjmu zopakovat.
Pokud používáte připojení orientované Socketna připojení, 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í k Shutdown metodě 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 ve frontě z cílové adresy, kterou zadáte v Connect metodě. Pokud je datovýgram, který obdržíte, větší než velikost buffer
parametru, buffer
vyplní první část zprávy, dojde ke ztrátě nadbytečných dat a SocketException vyvolá se.
Poznámka
Pokud se zobrazí zpráva SocketException, použijte SocketException.ErrorCode vlastnost k získání konkrétního kódu chyby. Po získání tohoto kódu si projděte dokumentaci k chybě rozhraní API verze Windows Sockets verze 2, kde najdete podrobný popis chyby.
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é
- Connect(EndPoint)
- ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)
- Available
- Shutdown(SocketShutdown)
- Close()
Platí pro
Receive(IList<ArraySegment<Byte>>)
Přijímá data z vazby Socket do seznamu vyrovnávacích pamětí příjmu.
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ů Byte , které obsahují 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ě.
Byla Socket uzavřena.
Poznámky
Tato metoda načte data do parametru vyrovnávací paměti a vrátí počet bajtů úspěšně načtených. Můžete volat z soketů orientovaných na připojení i bez připojení.
Toto přetížení vyžaduje, abyste zadali jednu nebo více vyrovnávacích pamětí.
Pokud používáte protokol orientovaný na připojení, musíte buď zavolat Connect navázat připojení vzdáleného hostitele, nebo Accept přijmout příchozí 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 v Connect metodě.Accept Pokud používáte protokol bez připojení, můžete také použít 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 bude blokovat, dokud nebudou Receive k dispozici data, pokud nebyla nastavena hodnota časového limitu pomocí Socket.ReceiveTimeout. Pokud byla překročena hodnota časového limitu Receive , volání vyvolá SocketExceptionchybu . Pokud jste v neblokačním režimu a v vyrovnávací paměti zásobníku protokolů nejsou k dispozici žádná data, Receive metoda se okamžitě dokončí a vyvolá SocketException. Vlastnost můžete použít Available k určení, jestli jsou data k dispozici pro čtení. Pokud Available není nula, zkuste operaci příjmu zopakovat.
Pokud používáte připojení orientované Socketna připojení, 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í k Shutdown metodě 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í výčtový datovýgram z cílové adresy, kterou zadáte v Connect metodě. Pokud je datovýgram, který obdržíte, větší než velikost buffers
parametru, buffers
vyplní první část zprávy, dojde ke ztrátě nadbytečných dat a SocketException vyvolá se.
Poznámka
Pokud se zobrazí zpráva SocketException, použijte SocketException.ErrorCode vlastnost k získání konkrétního kódu chyby. Po získání tohoto kódu si projděte dokumentaci k chybě rozhraní API verze Windows Sockets verze 2, kde najdete podrobný popis chyby.
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[])
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
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ě.
Byla Socket uzavřena.
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 na 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é se úspěšně přečetly. Můžete volat Receive z 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í hodnota posunu vyrovnávací paměti na hodnotu 0, výchozí velikost je délka parametru vyrovnávací paměti a SocketFlags výchozí Nonehodnota je .
Pokud používáte protokol orientovaný na připojení, musíte buď zavolat Connect navázat připojení vzdáleného hostitele, nebo Accept přijmout příchozí 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ě.Accept Pokud používáte protokol bez připojení, můžete také použít 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 bude blokovat, dokud nebudou Receive k dispozici data, pokud nebyla nastavena hodnota časového limitu pomocí Socket.ReceiveTimeout. Pokud byla překročena hodnota časového limitu Receive , volání vyvolá SocketExceptionchybu . Pokud jste v neblokačním režimu a v vyrovnávací paměti zásobníku protokolů nejsou k dispozici žádná data, Receive metoda se okamžitě dokončí a vyvolá SocketException. Vlastnost můžete použít Available k určení, jestli jsou data k dispozici pro čtení. Pokud Available není nula, zkuste operaci příjmu zopakovat.
Pokud používáte připojení orientované Socketna připojení, 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í k Shutdown metodě 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í datovýgram ve frontě z cílové adresy, kterou zadáte v Connect metodě. Pokud je datovýgram, který obdržíte, větší než velikost buffer
parametru, buffer
vyplní první část zprávy, dojde ke ztrátě nadbytečných dat a SocketException vyvolá se.
Poznámka
Pokud se zobrazí zpráva SocketException, použijte SocketException.ErrorCode vlastnost k získání konkrétního kódu chyby. Po získání tohoto kódu si projděte dokumentaci k chybě rozhraní API verze Windows Sockets verze 2, kde najdete podrobný popis chyby.
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é
- Connect(EndPoint)
- ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)
- Available
- Shutdown(SocketShutdown)
- Close()
Platí pro
Receive(IList<ArraySegment<Byte>>, SocketFlags)
Důležité
Toto rozhraní API neodpovídá specifikaci CLS.
- Alternativa odpovídající specifikaci CLS
- System.Net.Sockets.Socket.Receive(Byte[], SocketFlags)
Přijímá data z vazby Socket do seznamu vyrovnávacích pamětí příjmu 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);
[System.CLSCompliant(false)]
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
[<System.CLSCompliant(false)>]
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 ArraySegment<T>typů Byte obsahujících přijatá data.
- socketFlags
- SocketFlags
Bitové kombinace SocketFlags hodnot.
Návraty
Počet přijatých bajtů
- Atributy
Výjimky
Při pokusu o přístup k soketu došlo k chybě.
Ta Socket byla uzavřena.
Příklady
Následující příklad kódu ukazuje, jak přijímat data na 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ů úspěšně načtených. Můžete volat z soketů orientovaných na připojení i bez připojení.
Toto přetížení vyžaduje, abyste zadali jednu nebo více vyrovnávacích pamětí příjmu. Výchozí SocketFlags hodnota je None.
Pokud používáte protokol orientovaný na připojení, musíte buď zavolat Connect navázat připojení vzdáleného hostitele, nebo Accept přijmout příchozí připojení před voláním Receive. Tato Receive metoda bude číst pouze data, která přicházejí z připojení vzdáleného hostitele vytvořeného v metoděConnect.Accept Pokud používáte protokol bez připojení, můžete tuto metodu ReceiveFrom použít také. 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 zablokuje, Receive dokud nebudou k dispozici data, pokud nebyla nastavena hodnota časového limitu pomocí Socket.ReceiveTimeout. Pokud byla překročena hodnota časového limitu, Receive volání vyvolá chybu SocketException. Pokud jste v neblokovacím režimu a v 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 není nula, zkuste operaci příjmu zopakovat.
Pokud používáte připojení orientované Socketna připojení, 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í k Shutdown metodě a všechna dostupná data byla přijata, Receive metoda se dokončí okamžitě a vrátí nula bajtů.
Pokud používáte bezpočtové Socketpřipojení, Receive přečte první zadaná datagram z cílové adresy, kterou zadáte v Connect metodě. Pokud je datový diagram, který obdržíte, větší než velikost parametru buffers
, buffers
vyplní první část zprávy, dojde ke ztrátě nadbytečných dat a SocketException vyvolá se.
Poznámka
Pokud obdržíte kód chyby SocketException, použijte SocketException.ErrorCode vlastnost k získání konkrétního kódu chyby. Jakmile tento kód získáte, přečtěte si dokumentaci k kódu chyby rozhraní API Windows Sockets verze 2, kde najdete podrobný popis chyby.
Poznámka
Tento člen poskytuje trasovací informace, když je ve vaší aplikaci povoleno trasování sítě. Další informace naleznete v tématu Trasování sítě v rozhraní .NET Framework.
Viz také
- Connect(EndPoint)
- ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)
- Available
- Shutdown(SocketShutdown)
- Close()