Socket.Receive Metódus
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
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
- 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
- Connect(EndPoint)
- ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)
- Available
- Shutdown(SocketShutdown)
- Close()
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
- 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
- Connect(EndPoint)
- ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)
- Available
- Shutdown(SocketShutdown)
- Close()
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
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
- Connect(EndPoint)
- ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)
- Available
- Shutdown(SocketShutdown)
- Close()
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
- 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
- Connect(EndPoint)
- ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)
- Available
- Shutdown(SocketShutdown)
- Close()
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
- 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
- Connect(EndPoint)
- ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)
- Available
- Shutdown(SocketShutdown)
- Close()
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
- 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
- Connect(EndPoint)
- ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)
- Available
- Shutdown(SocketShutdown)
- Close()
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
- 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
- Connect(EndPoint)
- ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)
- Available
- Shutdown(SocketShutdown)
- Close()
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
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
- Connect(EndPoint)
- ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)
- Available
- Shutdown(SocketShutdown)
- Close()
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
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
- Connect(EndPoint)
- ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)
- Available
- Shutdown(SocketShutdown)
- Close()
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
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
- Connect(EndPoint)
- ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)
- Available
- Shutdown(SocketShutdown)
- Close()