Socket.Receive Metódus

Definíció

Adatokat fogad egy kötötttől Socket.

Túlterhelések

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

Adatokat fogad egy kötöttből Socket egy fogadási pufferbe a megadott SocketFlagshasználatával.

Receive(Span<Byte>, SocketFlags, SocketError)

Adatokat fogad egy kötöttből Socket egy fogadási pufferbe a megadott SocketFlagshasználatával.

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

Adatokat fogad egy kötötttől Socket a fogadási pufferek listájába a megadott SocketFlagshasználatával.

Receive(Byte[], Int32, SocketFlags)

A megadott számú bájtnyi adat fogadási pufferbe kötött Socket adatmennyiségét fogadja a megadott SocketFlagshasználatával.

Receive(Span<Byte>, SocketFlags)

Adatokat fogad egy kötöttből Socket egy fogadási pufferbe a megadott SocketFlagshasználatával.

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

A megadott számú bájtot fogadja egy kötésből Socket a fogadó puffer megadott eltolási pozíciójába a megadott SocketFlagshasználatával.

Receive(Byte[], SocketFlags)

Adatokat fogad egy kötöttből Socket egy fogadási pufferbe a megadott SocketFlagshasználatával.

Receive(Span<Byte>)

Adatokat fogad egy kötöttből Socket egy fogadási pufferbe.

Receive(IList<ArraySegment<Byte>>)

A fogadási pufferek listájába kötött Socket adatok fogadása.

Receive(Byte[])

Adatokat fogad egy kötöttből Socket egy fogadási pufferbe.

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

Adatokat fogad egy kötötttől Socket a fogadási pufferek listájába a megadott SocketFlagshasználatával.

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

Forrás:
Socket.cs
Forrás:
Socket.cs
Forrás:
Socket.cs
Forrás:
Socket.cs
Forrás:
Socket.cs

Adatokat fogad egy kötöttből Socket egy fogadási pufferbe a megadott SocketFlagshasználatával.

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

Paraméterek

buffer
Byte[]

Olyan típusú Byte tömb, amely a fogadott adatok tárolási helye.

offset
Int32

A kapott adatok tárolására használt paraméter pozíciója buffer .

size
Int32

A fogadandó bájtok száma.

socketFlags
SocketFlags

Az értékek bitenkénti kombinációja SocketFlags .

errorCode
SocketError

A SocketError szoftvercsatorna-hibát tároló objektum.

Válaszok

A fogadott bájtok teljes száma. A metódus csak akkor ad vissza nulla (0) értéket, ha a rendszer nulla bájtot kért, vagy ha nem érhető el több bájt, mert a társcsatorna kecses leállítást hajtott végre.

Kivételek

buffer az null.

offset kisebb, mint 0.

-vagy-

offset nagyobb, mint a hossza buffer.

-vagy-

size kisebb, mint 0.

-vagy-

size nagyobb, mint a paraméter értékének bufferoffset mínusz hossza.

A Socket le van zárva.

A hívásverem hívói nem rendelkeznek a szükséges engedélyekkel.

Megjegyzések

A Receive metódus beolvassa az adatokat a pufferparaméterbe, és visszaadja a sikeresen beolvasott bájtok számát. Kapcsolat-orientált és kapcsolat nélküli szoftvercsatornákról is hívhat Receive .

Ha kapcsolatorientált protokollt használ, vagy távoli gazdagépkapcsolat létesítéséhez kell hívnia Connect , vagy Accept fogadnia kell egy bejövő kapcsolatot a hívás Receiveelőtt. A Receive metódus csak a metódusban ConnectAccept létrehozott távoli gazdagépről érkező adatokat olvassa be. Ha kapcsolat nélküli protokollt használ, a metódust is használhatja ReceiveFrom . ReceiveFrom lehetővé teszi, hogy bármilyen gazdagépről érkező adatokat fogadjon.

Ha nem áll rendelkezésre adat az olvasáshoz, a Receive metódus blokkolni fogja, amíg az adatok nem érhetők el, kivéve, ha az időtúllépési érték a használatával Socket.ReceiveTimeoutlett beállítva. Ha túllépte az időtúllépési értéket, a Receive hívás egy SocketException. Ha nem blokkoló módban van, és nem áll rendelkezésre adat a protokollverem pufferében, a Receive metódus azonnal befejeződik, és egy SocketException. Hiba történt a szoftvercsatorna elérésekor. Lásd az alábbi megjegyzéseket. A tulajdonság segítségével Available megállapíthatja, hogy az adatok elérhetők-e olvasásra. Ha Available nem nulla, próbálkozzon újra a fogadási művelettel.

Ha kapcsolatorientált Socketmódszert használ, a metódus a Receive rendelkezésre álló adatok számától a méretparaméter által megadott bájtszámig beolvassa az adatokat. Ha a távoli gazdagép leállítja a Socket kapcsolatot a Shutdown metódussal, és az összes rendelkezésre álló adat megérkezett, a Receive metódus azonnal befejeződik, és nulla bájtot ad vissza.

Kapcsolat nélküli SocketReceive használat esetén a metódusban megadott célcímről olvassa be az első üzenetsorba helyezett datagramotConnect. Ha a kapott adatgram nagyobb, mint a buffer paraméter mérete, buffer az üzenet első részével lesz kitöltve, a felesleges adatok elvesznek, és a rendszer eldobja SocketException a értéket.

Note

Ez a tag nyomkövetési adatokat ad ki, amikor engedélyezi a hálózati nyomkövetést az alkalmazásban. További információ: Network Tracing in .NET Framework.

Lásd még

A következőre érvényes:

Receive(Span<Byte>, SocketFlags, SocketError)

Forrás:
Socket.cs
Forrás:
Socket.cs
Forrás:
Socket.cs
Forrás:
Socket.cs
Forrás:
Socket.cs

Adatokat fogad egy kötöttből Socket egy fogadási pufferbe a megadott SocketFlagshasználatával.

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

Paraméterek

buffer
Span<Byte>

Bájtok száma, amely a fogadott adatok tárolási helye.

socketFlags
SocketFlags

A küldési és fogadási viselkedést meghatározó enumerálási értékek bitenkénti kombinációja.

errorCode
SocketError

Amikor ez a metódus visszatér, a szoftvercsatorna hibakódjait meghatározó enumerálási értékek egyikét tartalmazza.

Válaszok

A fogadott bájtok teljes száma. A metódus csak akkor ad vissza nulla (0) értéket, ha a rendszer nulla bájtot kért, vagy ha nem érhető el több bájt, mert a társcsatorna kecses leállítást hajtott végre.

Kivételek

Hiba történt a szoftvercsatorna elérésekor.

A Socket le van zárva.

A hívásverem hívói nem rendelkeznek a szükséges engedélyekkel.

Megjegyzések

A Receive metódus beolvassa az adatokat a pufferparaméterbe, és visszaadja a sikeresen beolvasott bájtok számát. Kapcsolat-orientált és kapcsolat nélküli szoftvercsatornákról is hívhat Receive .

Ehhez a túlterheléshez csak fogadási puffert kell megadnia. A puffereltolás alapértelmezés szerint 0, a méret a pufferparaméter hosszára, az SocketFlags érték pedig alapértelmezés szerint a következő.None

Ha kapcsolatorientált protokollt használ, vagy távoli gazdakapcsolat létesítéséhez kell hívnia Connect , vagy Accept fogadnia kell egy bejövő kapcsolatot a hívás Receiveelőtt. A Receive metódus csak a metódusban ConnectAccept létrehozott távoli gazdagépről érkező adatokat olvassa be. Ha kapcsolat nélküli protokollt használ, a metódust is használhatja ReceiveFrom . ReceiveFrom lehetővé teszi, hogy bármilyen gazdagépről érkező adatokat fogadjon.

Ha nem áll rendelkezésre adat az olvasáshoz, a Receive metódus blokkolni fogja, amíg az adatok nem érhetők el, kivéve, ha az időtúllépési érték a használatával Socket.ReceiveTimeoutlett beállítva. Az időtúllépési érték túllépésekor a Receive hívás egy SocketException. Ha nem blokkoló módban van, és nem áll rendelkezésre adat a protokollverem pufferében, a Receive metódus azonnal befejeződik, és egy SocketException. A tulajdonság segítségével Available megállapíthatja, hogy az adatok elérhetők-e olvasásra. Ha Available nem nulla, próbálkozzon újra a fogadási művelettel.

Ha kapcsolatorientált Socketmódszert használ, a metódus a Receive lehető legtöbb adatot olvassa be a puffer méretének megfelelően. Ha a távoli gazdagép leállítja a Socket kapcsolatot a Shutdown metódussal, és az összes rendelkezésre álló adat megérkezett, a Receive metódus azonnal befejeződik, és nulla bájtot ad vissza.

Kapcsolat nélküli SocketReceive használat esetén a metódusban megadott célcímről olvassa be az első üzenetsorba helyezett datagramotConnect. Ha a kapott adatgram nagyobb, mint a buffer paraméter mérete, buffer az üzenet első részével lesz kitöltve, a felesleges adatok elvesznek, és a rendszer eldobja SocketException a értéket.

Note

Ha kap egy SocketException, használja a SocketException.ErrorCode tulajdonságot az adott hibakód lekéréséhez. A kód beszerzése után tekintse meg a Windows Sockets 2-es verziójának API-hibakódját a hiba részletes leírását.

Note

Ez a tag nyomkövetési adatokat ad ki, amikor engedélyezi a hálózati nyomkövetést az alkalmazásban. További információ: Network Tracing in .NET Framework.

Lásd még

A következőre érvényes:

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

Forrás:
Socket.cs
Forrás:
Socket.cs
Forrás:
Socket.cs
Forrás:
Socket.cs
Forrás:
Socket.cs

Adatokat fogad egy kötötttől Socket a fogadási pufferek listájába a megadott SocketFlagshasználatával.

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

Paraméterek

buffers
IList<ArraySegment<Byte>>

A fogadott adatokat tartalmazó típusok ArraySegment<T> listájaByte.

socketFlags
SocketFlags

Az értékek bitenkénti kombinációja SocketFlags .

errorCode
SocketError

A SocketError szoftvercsatorna-hibát tároló objektum.

Válaszok

A fogadott bájtok teljes száma. A metódus csak akkor ad vissza nulla (0) értéket, ha a rendszer nulla bájtot kért, vagy ha nem érhető el több bájt, mert a társcsatorna kecses leállítást hajtott végre.

Kivételek

buffers az null.

-vagy-

buffers. A darabszám nulla.

Hiba történt a szoftvercsatorna elérése közben.

A Socket le van zárva.

Megjegyzések

Ez a metódus beolvassa az adatokat a buffers paraméterbe, és visszaadja a sikeresen beolvasott bájtok számát. Kapcsolat-orientált és kapcsolat nélküli szoftvercsatornákról is hívhat.

Ehhez a túlterheléshez egy vagy több fogadópuffert kell megadnia. Az SocketFlags érték alapértelmezés szerint a következő.None

Ha kapcsolatorientált protokollt használ, vagy távoli gazdagépkapcsolat létesítéséhez kell hívnia Connect , vagy Accept fogadnia kell egy bejövő kapcsolatot a hívás Receiveelőtt. A Receive metódus csak a metódusban ConnectAccept létrehozott távoli gazdakapcsolatból érkező adatokat olvassa be. Ha kapcsolat nélküli protokollt használ, a metódust is használhatja ReceiveFrom . ReceiveFrom lehetővé teszi, hogy bármilyen gazdagépről érkező adatokat fogadjon.

Ha nem áll rendelkezésre adat az olvasáshoz, a Receive metódus blokkolni fogja, amíg az adatok nem érhetők el, kivéve, ha az időtúllépési érték a használatával Socket.ReceiveTimeoutlett beállítva. Ha túllépte az időtúllépési értéket, a Receive hívás egy SocketException. Ha nem blokkoló módban van, és nem áll rendelkezésre adat a protokollverem pufferében, a Receive metódus azonnal befejeződik, és egy SocketException. A tulajdonság segítségével Available megállapíthatja, hogy az adatok elérhetők-e olvasásra. Ha Available nem nulla, próbálkozzon újra a fogadási művelettel.

Ha kapcsolatorientált Socketmódszert használ, a metódus a Receive lehető legtöbb adatot olvassa be a puffer méretének megfelelően. Ha a távoli gazdagép leállítja a Socket kapcsolatot a Shutdown metódussal, és az összes rendelkezésre álló adat megérkezett, a Receive metódus azonnal befejeződik, és nulla bájtot ad vissza.

Kapcsolat nélküli SocketReceive használat esetén a metódusban megadott célcímről olvassa be az első üzenetsorba helyezett datagramotConnect. Ha a kapott adatgram nagyobb, mint a buffers paraméter mérete, buffers az üzenet első részével lesz kitöltve, a felesleges adatok elvesznek, és a rendszer eldobja SocketException a értéket.

Note

Ha kap egy SocketException, használja a SocketException.ErrorCode tulajdonságot az adott hibakód lekéréséhez. A kód beszerzése után tekintse meg a Windows Sockets 2-es verziójának API-hibakódját a hiba részletes leírását.

Note

Ez a tag nyomkövetési adatokat ad ki, amikor engedélyezi a hálózati nyomkövetést az alkalmazásban. További információ: Network Tracing in .NET Framework.

Lásd még

A következőre érvényes:

Receive(Byte[], Int32, SocketFlags)

Forrás:
Socket.cs
Forrás:
Socket.cs
Forrás:
Socket.cs
Forrás:
Socket.cs
Forrás:
Socket.cs

A megadott számú bájtnyi adat fogadási pufferbe kötött Socket adatmennyiségét fogadja a megadott SocketFlagshasználatával.

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

Paraméterek

buffer
Byte[]

Olyan típusú Byte tömb, amely a fogadott adatok tárolási helye.

size
Int32

A fogadandó bájtok száma.

socketFlags
SocketFlags

Az értékek bitenkénti kombinációja SocketFlags .

Válaszok

A fogadott bájtok teljes száma. A metódus csak akkor ad vissza nulla (0) értéket, ha a rendszer nulla bájtot kért, vagy ha nem érhető el több bájt, mert a társcsatorna kecses leállítást hajtott végre.

Kivételek

buffer az null.

size mérete meghaladja a buffer.

Hiba történt a szoftvercsatorna elérésekor.

A Socket le van zárva.

A hívásverem hívói nem rendelkeznek a szükséges engedélyekkel.

Példák

Az alábbiakban megkapjuk a talált bufferadatokat, és megadja None a következőt SocketFlags: .


// 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

Megjegyzések

A Receive metódus adatokat olvas be a buffer paraméterbe, és visszaadja a sikeresen beolvasott bájtok számát. Kapcsolat-orientált és kapcsolat nélküli szoftvercsatornákról is hívhat Receive .

Ehhez a túlterheléshez csak egy fogadási puffert, a fogadni kívánt bájtok számát és a szükséges SocketFlagsbájtokat kell megadnia.

Ha kapcsolatorientált protokollt használ, vagy távoli gazdagépkapcsolat létesítéséhez kell hívnia Connect , vagy Accept fogadnia kell egy bejövő kapcsolatot a hívás Receiveelőtt. A Receive metódus csak a metódusban ConnectAccept létrehozott távoli gazdagépről érkező adatokat olvassa be. Ha kapcsolat nélküli protokollt használ, a metódust is használhatja ReceiveFrom . ReceiveFrom lehetővé teszi, hogy bármilyen gazdagépről érkező adatokat fogadjon.

Ha nem áll rendelkezésre adat az olvasáshoz, a Receive metódus blokkolni fogja, amíg az adatok nem érhetők el, kivéve, ha az időtúllépési érték a használatával Socket.ReceiveTimeoutlett beállítva. Ha túllépte az időtúllépési értéket, a Receive hívás egy SocketException. Ha nem blokkoló módban van, és nem áll rendelkezésre adat a protokollverem pufferében, a Receive metódus azonnal befejeződik, és egy SocketException. A tulajdonság segítségével Available megállapíthatja, hogy az adatok elérhetők-e olvasásra. Ha Available nem nulla, próbálkozzon újra a fogadási művelettel.

Ha kapcsolatorientált Socketmódszert használ, a metódus a Receive lehető legtöbb adatot olvassa be a paraméter által size megadott bájtok számának megfelelően. Ha a távoli gazdagép leállítja a Socket kapcsolatot a Shutdown metódussal, és az összes rendelkezésre álló adat megérkezett, a Receive metódus azonnal befejeződik, és nulla bájtot ad vissza.

Kapcsolat nélküli SocketReceive használat esetén a metódusban megadott célcímről olvassa be az első üzenetsorba helyezett datagramotConnect. Ha a kapott adatgram nagyobb, mint a buffer paraméter mérete, buffer az üzenet első részével lesz kitöltve, a felesleges adatok elvesznek, és a rendszer eldobja SocketException a értéket.

Note

Ha kap egy SocketException, használja a SocketException.ErrorCode tulajdonságot az adott hibakód lekéréséhez. A kód beszerzése után tekintse meg a Windows Sockets 2-es verziójának API-hibakódját a hiba részletes leírását.

Note

Ez a tag nyomkövetési adatokat ad ki, amikor engedélyezi a hálózati nyomkövetést az alkalmazásban. További információ: Network Tracing in .NET Framework.

Lásd még

A következőre érvényes:

Receive(Span<Byte>, SocketFlags)

Forrás:
Socket.cs
Forrás:
Socket.cs
Forrás:
Socket.cs
Forrás:
Socket.cs
Forrás:
Socket.cs

Adatokat fogad egy kötöttből Socket egy fogadási pufferbe a megadott SocketFlagshasználatával.

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

Paraméterek

buffer
Span<Byte>

Bájtok száma, amely a fogadott adatok tárolási helye.

socketFlags
SocketFlags

A küldési és fogadási viselkedést meghatározó enumerálási értékek bitenkénti kombinációja.

Válaszok

A fogadott bájtok teljes száma. A metódus csak akkor ad vissza nulla (0) értéket, ha a rendszer nulla bájtot kért, vagy ha nem érhető el több bájt, mert a társcsatorna kecses leállítást hajtott végre.

Kivételek

Hiba történt a szoftvercsatorna elérésekor.

A Socket le van zárva.

A hívásverem hívói nem rendelkeznek a szükséges engedélyekkel.

Megjegyzések

A Receive metódus beolvassa az adatokat a pufferparaméterbe, és visszaadja a sikeresen beolvasott bájtok számát. Kapcsolat-orientált és kapcsolat nélküli szoftvercsatornákról is hívhat Receive .

Ehhez a túlterheléshez csak fogadási puffert kell megadnia. A puffereltolás alapértelmezés szerint 0, a méret a pufferparaméter hosszára, az SocketFlags érték pedig alapértelmezés szerint a következő.None

Ha kapcsolatorientált protokollt használ, vagy távoli gazdakapcsolat létesítéséhez kell hívnia Connect , vagy Accept fogadnia kell egy bejövő kapcsolatot a hívás Receiveelőtt. A Receive metódus csak a metódusban ConnectAccept létrehozott távoli gazdagépről érkező adatokat olvassa be. Ha kapcsolat nélküli protokollt használ, a metódust is használhatja ReceiveFrom . ReceiveFrom lehetővé teszi, hogy bármilyen gazdagépről érkező adatokat fogadjon.

Ha nem áll rendelkezésre adat az olvasáshoz, a Receive metódus blokkolni fogja, amíg az adatok nem érhetők el, kivéve, ha az időtúllépési érték a használatával Socket.ReceiveTimeoutlett beállítva. Az időtúllépési érték túllépésekor a Receive hívás egy SocketException. Ha nem blokkoló módban van, és a protokollverem pufferében nincs elérhető adat, a Receive metódus azonnal befejeződik, és egy SocketException. A tulajdonság segítségével Available megállapíthatja, hogy az adatok elérhetők-e olvasásra. Ha Available nem nulla, próbálkozzon újra a fogadási művelettel.

Ha kapcsolatorientált Socketmódszert használ, a metódus a Receive lehető legtöbb adatot olvassa be a puffer méretének megfelelően. Ha a távoli gazdagép leállítja a Socket kapcsolatot a Shutdown metódussal, és az összes rendelkezésre álló adat megérkezett, a Receive metódus azonnal befejeződik, és nulla bájtot ad vissza.

Kapcsolat nélküli SocketReceive használat esetén a metódusban megadott célcímről olvassa be az első üzenetsorba helyezett datagramotConnect. Ha a kapott adatgram nagyobb, mint a buffer paraméter mérete, buffer az üzenet első részével lesz kitöltve, a felesleges adatok elvesznek, és a rendszer eldob egy SocketException értéket.

Note

Ha kap egy SocketException, használja a SocketException.ErrorCode tulajdonságot az adott hibakód lekéréséhez. A kód beszerzése után tekintse meg a Windows Sockets 2-es verziójának API-hibakódját a hiba részletes leírását.

Ez a tag nyomkövetési adatokat ad ki, amikor engedélyezi a hálózati nyomkövetést az alkalmazásban. További információ: Network Tracing in .NET Framework.

Lásd még

A következőre érvényes:

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

Forrás:
Socket.cs
Forrás:
Socket.cs
Forrás:
Socket.cs
Forrás:
Socket.cs
Forrás:
Socket.cs

A megadott számú bájtot fogadja egy kötésből Socket a fogadó puffer megadott eltolási pozíciójába a megadott SocketFlagshasználatával.

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

Paraméterek

buffer
Byte[]

Olyan típusú Byte tömb, amely a fogadott adatok tárolási helye.

offset
Int32

A fogadott adatok tárolásának helye buffer .

size
Int32

A fogadandó bájtok száma.

socketFlags
SocketFlags

Az értékek bitenkénti kombinációja SocketFlags .

Válaszok

A fogadott bájtok teljes száma. A metódus csak akkor ad vissza nulla (0) értéket, ha a rendszer nulla bájtot kért, vagy ha nem érhető el több bájt, mert a társcsatorna kecses leállítást hajtott végre.

Kivételek

buffer az null.

offset kisebb, mint 0.

-vagy-

offset nagyobb, mint a hossza buffer.

-vagy-

size kisebb, mint 0.

-vagy-

size nagyobb, mint a paraméter értékének bufferoffset mínusz hossza.

socketFlags nem az értékek érvényes kombinációja.

-vagy-

A LocalEndPoint tulajdonság nincs beállítva.

-vagy-

Operációs rendszerhiba lép fel a Socket.

A Socket le van zárva.

A hívásverem hívói nem rendelkeznek a szükséges engedélyekkel.

Példák

Az alábbi példakód egy adatpuffert, egy eltolást, egy méretet és egy szoftvercsatorna-jelzőt határoz meg, mielőtt adatokat fogad egy csatlakoztatott Socketeszközön.

// 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

Megjegyzések

A Receive metódus beolvassa az adatokat a pufferparaméterbe, és visszaadja a sikeresen beolvasott bájtok számát. Kapcsolat-orientált és kapcsolat nélküli szoftvercsatornákról is hívhat Receive .

Ha kapcsolatorientált protokollt használ, vagy távoli gazdagépkapcsolat létesítéséhez kell hívnia Connect , vagy Accept fogadnia kell egy bejövő kapcsolatot a hívás Receiveelőtt. A Receive metódus csak a metódusban ConnectAccept létrehozott távoli gazdagépről érkező adatokat olvassa be. Ha kapcsolat nélküli protokollt használ, a metódust is használhatja ReceiveFrom . ReceiveFrom lehetővé teszi, hogy bármilyen gazdagépről érkező adatokat fogadjon.

Ha nem áll rendelkezésre adat az olvasáshoz, a Receive metódus blokkolni fogja, amíg az adatok nem érhetők el, kivéve, ha az időtúllépési érték a használatával Socket.ReceiveTimeoutlett beállítva. Ha túllépte az időtúllépési értéket, a Receive hívás egy SocketException. Ha nem blokkoló módban van, és nem áll rendelkezésre adat a protokollverem pufferében, a Receive metódus azonnal befejeződik, és egy SocketException. Hiba történt a szoftvercsatorna elérésekor. Lásd az alábbi megjegyzéseket. A tulajdonság segítségével Available megállapíthatja, hogy az adatok elérhetők-e olvasásra. Ha Available nem nulla, próbálkozzon újra a fogadási művelettel.

Ha kapcsolatorientált Socketmódszert használ, a metódus a Receive rendelkezésre álló adatok számától a méretparaméter által megadott bájtszámig beolvassa az adatokat. Ha a távoli gazdagép leállítja a Socket kapcsolatot a Shutdown metódussal, és az összes rendelkezésre álló adat megérkezett, a Receive metódus azonnal befejeződik, és nulla bájtot ad vissza.

Kapcsolat nélküli SocketReceive használat esetén a metódusban megadott célcímről olvassa be az első üzenetsorba helyezett datagramotConnect. Ha a kapott adatgram nagyobb, mint a buffer paraméter mérete, buffer az üzenet első részével lesz kitöltve, a felesleges adatok elvesznek, és a rendszer eldobja SocketException a értéket.

Note

Ha kap egy SocketException, használja a SocketException.ErrorCode tulajdonságot az adott hibakód lekéréséhez. A kód beszerzése után tekintse meg a Windows Sockets 2-es verziójának API-hibakódját a hiba részletes leírását.

Note

Ez a tag nyomkövetési adatokat ad ki, amikor engedélyezi a hálózati nyomkövetést az alkalmazásban. További információ: Network Tracing in .NET Framework.

Lásd még

A következőre érvényes:

Receive(Byte[], SocketFlags)

Forrás:
Socket.cs
Forrás:
Socket.cs
Forrás:
Socket.cs
Forrás:
Socket.cs
Forrás:
Socket.cs

Adatokat fogad egy kötöttből Socket egy fogadási pufferbe a megadott SocketFlagshasználatával.

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

Paraméterek

buffer
Byte[]

Olyan típusú Byte tömb, amely a fogadott adatok tárolási helye.

socketFlags
SocketFlags

Az értékek bitenkénti kombinációja SocketFlags .

Válaszok

A fogadott bájtok teljes száma. A metódus csak akkor ad vissza nulla (0) értéket, ha a rendszer nulla bájtot kért, vagy ha nem érhető el több bájt, mert a társcsatorna kecses leállítást hajtott végre.

Kivételek

buffer az null.

Hiba történt a szoftvercsatorna elérésekor.

A Socket le van zárva.

A hívásverem hívói nem rendelkeznek a szükséges engedélyekkel.

Példák

Az alábbi példakód egy adatpuffert határoz meg, valamint SocketFlags egy csatlakoztatott Socketadat fogadásához.

// 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

Megjegyzések

A Receive metódus beolvassa az adatokat a pufferparaméterbe, és visszaadja a sikeresen beolvasott bájtok számát. Kapcsolat-orientált és kapcsolat nélküli szoftvercsatornákról is hívhat Receive .

Ez a túlterhelés csak egy fogadási puffert és a szükséges SocketFlags. A puffer eltolása alapértelmezés szerint 0, a méret pedig a bájtparaméter hosszára alapértelmezés szerint.

Ha kapcsolatorientált protokollt használ, vagy távoli gazdagépkapcsolat létesítéséhez kell hívnia Connect , vagy Accept fogadnia kell egy bejövő kapcsolatot a hívás Receiveelőtt. A Receive metódus csak a metódusban ConnectAccept létrehozott távoli gazdagépről érkező adatokat olvassa be. Ha kapcsolat nélküli protokollt használ, a metódust is használhatja ReceiveFrom . ReceiveFrom lehetővé teszi, hogy bármilyen gazdagépről érkező adatokat fogadjon.

Ha nem áll rendelkezésre adat az olvasáshoz, a Receive metódus blokkolni fogja, amíg az adatok nem érhetők el. Ha nem blokkoló módban van, és nem áll rendelkezésre adat a protokollverem pufferében, a Receive metódus azonnal befejeződik, és egy SocketException. A tulajdonság segítségével Available megállapíthatja, hogy az adatok elérhetők-e olvasásra. Ha Available nem nulla, próbálkozzon újra a fogadási művelettel.

Ha kapcsolatorientált Socketeszközt használ, a metódus a Receive puffer méretének megfelelően annyi adatot olvas be, amennyit csak lehet. Ha a távoli gazdagép leállítja a Socket kapcsolatot a Shutdown metódussal, és az összes rendelkezésre álló adat megérkezett, a Receive metódus azonnal befejeződik, és nulla bájtot ad vissza.

Kapcsolat nélküli SocketReceive használat esetén a metódusban megadott célcímről olvassa be az első lekérdezett datagramotConnect. Ha a kapott adatgram nagyobb, mint a buffer paraméter mérete, buffer az üzenet első részével lesz kitöltve, a felesleges adatok elvesznek, és a rendszer eldobja SocketException a értéket.

Note

Ha kap egy SocketException, használja a SocketException.ErrorCode tulajdonságot az adott hibakód lekéréséhez. A kód beszerzése után tekintse meg a Windows Sockets 2-es verziójának API-hibakódját a hiba részletes leírását.

Note

Ez a tag nyomkövetési adatokat ad ki, amikor engedélyezi a hálózati nyomkövetést az alkalmazásban. További információ: Network Tracing in .NET Framework.

Lásd még

A következőre érvényes:

Receive(Span<Byte>)

Forrás:
Socket.cs
Forrás:
Socket.cs
Forrás:
Socket.cs
Forrás:
Socket.cs
Forrás:
Socket.cs

Adatokat fogad egy kötöttből Socket egy fogadási pufferbe.

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

Paraméterek

buffer
Span<Byte>

Bájtok száma, amely a fogadott adatok tárolási helye.

Válaszok

A fogadott bájtok teljes száma. A metódus csak akkor ad vissza nulla (0) értéket, ha a rendszer nulla bájtot kért, vagy ha nem érhető el több bájt, mert a társcsatorna kecses leállítást hajtott végre.

Kivételek

Hiba történt a szoftvercsatorna elérésekor.

A Socket le van zárva.

A hívásverem hívói nem rendelkeznek a szükséges engedélyekkel.

Megjegyzések

A Receive metódus beolvassa az adatokat a pufferparaméterbe, és visszaadja a sikeresen beolvasott bájtok számát. Kapcsolat-orientált és kapcsolat nélküli szoftvercsatornákról is hívhat Receive .

Ehhez a túlterheléshez csak fogadási puffert kell megadnia. A puffereltolás alapértelmezés szerint 0, a méret a pufferparaméter hosszára, az SocketFlags érték pedig alapértelmezés szerint a következő.None

Ha kapcsolatorientált protokollt használ, vagy távoli gazdakapcsolat létesítéséhez kell hívnia Connect , vagy Accept fogadnia kell egy bejövő kapcsolatot a hívás Receiveelőtt. A Receive metódus csak a metódusban ConnectAccept létrehozott távoli gazdagépről érkező adatokat olvassa be. Ha kapcsolat nélküli protokollt használ, a metódust is használhatja ReceiveFrom . ReceiveFrom lehetővé teszi, hogy bármilyen gazdagépről érkező adatokat fogadjon.

Ha nem áll rendelkezésre adat az olvasáshoz, a Receive metódus blokkolni fogja, amíg az adatok nem érhetők el, kivéve, ha az időtúllépési érték a használatával Socket.ReceiveTimeoutlett beállítva. Az időtúllépési érték túllépésekor a Receive hívás egy SocketException. Ha nem blokkoló módban van, és nem áll rendelkezésre adat a protokollverem pufferében, a Receive metódus azonnal befejeződik, és egy SocketException. A tulajdonság segítségével Available megállapíthatja, hogy az adatok elérhetők-e olvasásra. Ha Available nem nulla, próbálkozzon újra a fogadási művelettel.

Ha kapcsolatorientált Socketmódszert használ, a metódus a Receive lehető legtöbb adatot olvassa be a puffer méretének megfelelően. Ha a távoli gazdagép leállítja a Socket kapcsolatot a Shutdown metódussal, és az összes rendelkezésre álló adat megérkezett, a Receive metódus azonnal befejeződik, és nulla bájtot ad vissza.

Kapcsolat nélküli SocketReceive használat esetén a metódusban megadott célcímről olvassa be az első üzenetsorba helyezett datagramotConnect. Ha a kapott adatgram nagyobb, mint a buffer paraméter mérete, buffer az üzenet első részével lesz kitöltve, a felesleges adatok elvesznek, és a rendszer eldob egy SocketException értéket.

Note

Ha kap egy SocketException, használja a SocketException.ErrorCode tulajdonságot az adott hibakód lekéréséhez. A kód beszerzése után tekintse meg a Windows Sockets 2-es verziójának API-hibakódját a hiba részletes leírását.

Ez a tag nyomkövetési adatokat ad ki, amikor engedélyezi a hálózati nyomkövetést az alkalmazásban. További információ: Network Tracing in .NET Framework.

Lásd még

A következőre érvényes:

Receive(IList<ArraySegment<Byte>>)

Forrás:
Socket.cs
Forrás:
Socket.cs
Forrás:
Socket.cs
Forrás:
Socket.cs
Forrás:
Socket.cs

A fogadási pufferek listájába kötött Socket adatok fogadása.

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

Paraméterek

buffers
IList<ArraySegment<Byte>>

A fogadott adatokat tartalmazó típusok ArraySegment<T> listájaByte.

Válaszok

A fogadott bájtok teljes száma. A metódus csak akkor ad vissza nulla (0) értéket, ha a rendszer nulla bájtot kért, vagy ha nem érhető el több bájt, mert a társcsatorna kecses leállítást hajtott végre.

Kivételek

A buffers paraméter a következő null: .

Hiba történt a szoftvercsatorna elérése közben.

A Socket le van zárva.

Megjegyzések

Ez a metódus beolvassa az adatokat a pufferek paraméterébe, és visszaadja a sikeresen beolvasott bájtok számát. Kapcsolat-orientált és kapcsolat nélküli szoftvercsatornákról is hívhat.

Ehhez a túlterheléshez egy vagy több fogadópuffert kell megadnia.

Ha kapcsolatorientált protokollt használ, vagy távoli gazdagépkapcsolat létesítéséhez kell hívnia Connect , vagy Accept fogadnia kell egy bejövő kapcsolatot a hívás Receiveelőtt. A Receive metódus csak a metódusban ConnectAccept létrehozott távoli gazdakapcsolatból érkező adatokat olvassa be. Ha kapcsolat nélküli protokollt használ, a metódust is használhatja ReceiveFrom . ReceiveFrom lehetővé teszi, hogy bármilyen gazdagépről érkező adatokat fogadjon.

Ha nem áll rendelkezésre adat az olvasáshoz, a Receive metódus blokkolni fogja, amíg az adatok nem érhetők el, kivéve, ha az időtúllépési érték a használatával Socket.ReceiveTimeoutlett beállítva. Ha túllépte az időtúllépési értéket, a Receive hívás egy SocketException. Ha nem blokkoló módban van, és nem áll rendelkezésre adat a protokollverem pufferében, a Receive metódus azonnal befejeződik, és egy SocketException. A tulajdonság segítségével Available megállapíthatja, hogy az adatok elérhetők-e olvasásra. Ha Available nem nulla, próbálkozzon újra a fogadási művelettel.

Ha kapcsolatorientált Socketmódszert használ, a metódus a Receive lehető legtöbb adatot olvassa be a puffer méretének megfelelően. Ha a távoli gazdagép leállítja a Socket kapcsolatot a Shutdown metódussal, és az összes rendelkezésre álló adat megérkezett, a Receive metódus azonnal befejeződik, és nulla bájtot ad vissza.

Kapcsolat nélküli SocketReceive használat esetén a metódusban megadott célcímről olvassa be az első lekérdezett datagramotConnect. Ha a kapott adatgram nagyobb, mint a buffers paraméter mérete, buffers az üzenet első részével lesz kitöltve, a felesleges adatok elvesznek, és a rendszer eldobja SocketException a értéket.

Note

Ha kap egy SocketException, használja a SocketException.ErrorCode tulajdonságot az adott hibakód lekéréséhez. A kód beszerzése után tekintse meg a Windows Sockets 2-es verziójának API-hibakódját a hiba részletes leírását.

Megjegyzés Ez a tag nyomkövetési adatokat ad ki, amikor engedélyezi a hálózati nyomkövetést az alkalmazásban. További információ: Network Tracing in .NET Framework.

A következőre érvényes:

Receive(Byte[])

Forrás:
Socket.cs
Forrás:
Socket.cs
Forrás:
Socket.cs
Forrás:
Socket.cs
Forrás:
Socket.cs

Adatokat fogad egy kötöttből Socket egy fogadási pufferbe.

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

Paraméterek

buffer
Byte[]

Olyan típusú Byte tömb, amely a fogadott adatok tárolási helye.

Válaszok

A fogadott bájtok teljes száma. A metódus csak akkor ad vissza nulla (0) értéket, ha a rendszer nulla bájtot kért, vagy ha nem érhető el több bájt, mert a társcsatorna kecses leállítást hajtott végre.

Kivételek

buffer az null.

Hiba történt a szoftvercsatorna elérésekor.

A Socket le van zárva.

A hívásverem hívói nem rendelkeznek a szükséges engedélyekkel.

Példák

Az alábbi példakód egy csatlakoztatott Socketeszközön fogad adatokat.

// 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

Megjegyzések

A Receive metódus beolvassa az adatokat a pufferparaméterbe, és visszaadja a sikeresen beolvasott bájtok számát. Kapcsolat-orientált és kapcsolat nélküli szoftvercsatornákról is hívhat Receive .

Ehhez a túlterheléshez csak fogadási puffert kell megadnia. A puffereltolás alapértelmezés szerint 0, a méret a pufferparaméter hosszára, az SocketFlags érték pedig alapértelmezés szerint a következő.None

Ha kapcsolatorientált protokollt használ, vagy távoli gazdagépkapcsolat létesítéséhez kell hívnia Connect , vagy Accept fogadnia kell egy bejövő kapcsolatot a hívás Receiveelőtt. A Receive metódus csak a metódusban ConnectAccept létrehozott távoli gazdagépről érkező adatokat olvassa be. Ha kapcsolat nélküli protokollt használ, a metódust is használhatja ReceiveFrom . ReceiveFrom lehetővé teszi, hogy bármilyen gazdagépről érkező adatokat fogadjon.

Ha nem áll rendelkezésre adat az olvasáshoz, a Receive metódus blokkolni fogja, amíg az adatok nem érhetők el, kivéve, ha az időtúllépési érték a használatával Socket.ReceiveTimeoutlett beállítva. Ha túllépte az időtúllépési értéket, a Receive hívás egy SocketException. Ha nem blokkoló módban van, és nem áll rendelkezésre adat a protokollverem pufferében, a Receive metódus azonnal befejeződik, és egy SocketException. A tulajdonság segítségével Available megállapíthatja, hogy az adatok elérhetők-e olvasásra. Ha Available nem nulla, próbálkozzon újra a fogadási művelettel.

Ha kapcsolatorientált Socketmódszert használ, a metódus a Receive lehető legtöbb adatot olvassa be a puffer méretének megfelelően. Ha a távoli gazdagép leállítja a Socket kapcsolatot a Shutdown metódussal, és az összes rendelkezésre álló adat megérkezett, a Receive metódus azonnal befejeződik, és nulla bájtot ad vissza.

Kapcsolat nélküli SocketReceive használat esetén a metódusban megadott célcímről olvassa be az első üzenetsorba helyezett datagramotConnect. Ha a kapott adatgram nagyobb, mint a buffer paraméter mérete, buffer az üzenet első részével lesz kitöltve, a felesleges adatok elvesznek, és a rendszer eldobja SocketException a értéket.

Note

Ha kap egy SocketException, használja a SocketException.ErrorCode tulajdonságot az adott hibakód lekéréséhez. A kód beszerzése után tekintse meg a Windows Sockets 2-es verziójának API-hibakódját a hiba részletes leírását.

Note

Ez a tag nyomkövetési adatokat ad ki, amikor engedélyezi a hálózati nyomkövetést az alkalmazásban. További információ: Network Tracing in .NET Framework.

Lásd még

A következőre érvényes:

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

Forrás:
Socket.cs
Forrás:
Socket.cs
Forrás:
Socket.cs
Forrás:
Socket.cs
Forrás:
Socket.cs

Adatokat fogad egy kötötttől Socket a fogadási pufferek listájába a megadott SocketFlagshasználatával.

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

Paraméterek

buffers
IList<ArraySegment<Byte>>

A fogadott adatokat tartalmazó típusok ArraySegment<T> listájaByte.

socketFlags
SocketFlags

Az értékek bitenkénti kombinációja SocketFlags .

Válaszok

A fogadott bájtok teljes száma. A metódus csak akkor ad vissza nulla (0) értéket, ha a rendszer nulla bájtot kért, vagy ha nem érhető el több bájt, mert a társcsatorna kecses leállítást hajtott végre.

Kivételek

buffers az null.

-vagy-

buffers. A darabszám nulla.

Hiba történt a szoftvercsatorna elérése közben.

A Socket le van zárva.

Példák

Az alábbi példakód bemutatja, hogyan fogadhat adatokat egy csatlakoztatott Socketeszközön.


// 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));

Megjegyzések

Ez a metódus beolvassa az adatokat a buffers paraméterbe, és visszaadja a sikeresen beolvasott bájtok számát. Kapcsolat-orientált és kapcsolat nélküli szoftvercsatornákról is hívhat.

Ehhez a túlterheléshez egy vagy több fogadópuffert kell megadnia. Az SocketFlags érték alapértelmezés szerint a következő.None

Ha kapcsolatorientált protokollt használ, vagy távoli gazdagépkapcsolat létesítéséhez kell hívnia Connect , vagy Accept fogadnia kell egy bejövő kapcsolatot a hívás Receiveelőtt. A Receive metódus csak a metódusban ConnectAccept létrehozott távoli gazdakapcsolatból érkező adatokat olvassa be. Ha kapcsolat nélküli protokollt használ, a metódust is használhatja ReceiveFrom . ReceiveFrom lehetővé teszi, hogy bármilyen gazdagépről érkező adatokat fogadjon.

Ha nem áll rendelkezésre adat az olvasáshoz, a Receive metódus blokkolni fogja, amíg az adatok nem érhetők el, kivéve, ha az időtúllépési érték a használatával Socket.ReceiveTimeoutlett beállítva. Ha túllépte az időtúllépési értéket, a Receive hívás egy SocketException. Ha nem blokkoló módban van, és nem áll rendelkezésre adat a protokollverem pufferében, a Receive metódus azonnal befejeződik, és egy SocketException. A tulajdonság segítségével Available megállapíthatja, hogy az adatok elérhetők-e olvasásra. Ha Available nem nulla, próbálkozzon újra a fogadási művelettel.

Ha kapcsolatorientált Socketmódszert használ, a metódus a Receive lehető legtöbb adatot olvassa be a puffer méretének megfelelően. Ha a távoli gazdagép leállítja a Socket kapcsolatot a Shutdown metódussal, és az összes rendelkezésre álló adat megérkezett, a Receive metódus azonnal befejeződik, és nulla bájtot ad vissza.

Kapcsolat nélküli SocketReceive használat esetén a metódusban megadott célcímről olvassa be az első lekérdezett datagramotConnect. Ha a kapott adatgram nagyobb, mint a buffers paraméter mérete, buffers az üzenet első részével lesz kitöltve, a felesleges adatok elvesznek, és a rendszer eldobja SocketException a értéket.

Note

Ha kap egy SocketException, használja a SocketException.ErrorCode tulajdonságot az adott hibakód lekéréséhez. A kód beszerzése után tekintse meg a Windows Sockets 2-es verziójának API-hibakódját a hiba részletes leírását.

Note

Ez a tag nyomkövetési adatokat ad ki, amikor engedélyezi a hálózati nyomkövetést az alkalmazásban. További információ: Network Tracing in .NET Framework.

Lásd még

A következőre érvényes: