Socket.ReceiveAsync 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.
Túlterhelések
| Name | Description |
|---|---|
| ReceiveAsync(ArraySegment<Byte>) |
Adatokat fogad egy csatlakoztatott szoftvercsatornából. |
| ReceiveAsync(IList<ArraySegment<Byte>>) |
Adatokat fogad egy csatlakoztatott szoftvercsatornából. |
| ReceiveAsync(SocketAsyncEventArgs) |
Elindít egy aszinkron kérést, amely adatokat fogad egy csatlakoztatott Socket objektumból. |
| ReceiveAsync(ArraySegment<Byte>, SocketFlags) |
Adatokat fogad egy csatlakoztatott szoftvercsatornából. |
| ReceiveAsync(IList<ArraySegment<Byte>>, SocketFlags) |
Adatokat fogad egy csatlakoztatott szoftvercsatornából. |
| ReceiveAsync(Memory<Byte>, CancellationToken) |
Adatokat fogad egy csatlakoztatott szoftvercsatornából. |
| ReceiveAsync(Memory<Byte>, SocketFlags, CancellationToken) |
Adatokat fogad egy csatlakoztatott szoftvercsatornából. |
ReceiveAsync(ArraySegment<Byte>)
- Forrás:
- Socket.Tasks.cs
- Forrás:
- Socket.Tasks.cs
- Forrás:
- Socket.Tasks.cs
- Forrás:
- Socket.Tasks.cs
- Forrás:
- Socket.Tasks.cs
Adatokat fogad egy csatlakoztatott szoftvercsatornából.
public:
System::Threading::Tasks::Task<int> ^ ReceiveAsync(ArraySegment<System::Byte> buffer);
public System.Threading.Tasks.Task<int> ReceiveAsync(ArraySegment<byte> buffer);
member this.ReceiveAsync : ArraySegment<byte> -> System.Threading.Tasks.Task<int>
Public Function ReceiveAsync (buffer As ArraySegment(Of Byte)) As Task(Of Integer)
Paraméterek
- buffer
- ArraySegment<Byte>
A fogadott adatok puffere.
Válaszok
Az aszinkron fogadási műveletet képviselő feladat. A tulajdonság értéke Result a nulla (0) és a kért bájtok száma között beolvasott buffer bájtok teljes számát tartalmazza. Az eredmény értéke csak akkor nulla (0), 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. Ha nulla bájtot kérnek, a fogadási műveletek azonnal befejeződhetnek, vagy nem fejeződhetnek be, amíg legalább egy bájt el nem érhető (de adatok felhasználása nélkül).
Kivételek
A Socket le van zárva.
Hiba történt a szoftvercsatorna elérésekor.
A következőre érvényes:
ReceiveAsync(IList<ArraySegment<Byte>>)
- Forrás:
- Socket.Tasks.cs
- Forrás:
- Socket.Tasks.cs
- Forrás:
- Socket.Tasks.cs
- Forrás:
- Socket.Tasks.cs
- Forrás:
- Socket.Tasks.cs
Adatokat fogad egy csatlakoztatott szoftvercsatornából.
public:
System::Threading::Tasks::Task<int> ^ ReceiveAsync(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers);
public System.Threading.Tasks.Task<int> ReceiveAsync(System.Collections.Generic.IList<ArraySegment<byte>> buffers);
member this.ReceiveAsync : System.Collections.Generic.IList<ArraySegment<byte>> -> System.Threading.Tasks.Task<int>
Public Function ReceiveAsync (buffers As IList(Of ArraySegment(Of Byte))) As Task(Of Integer)
Paraméterek
- buffers
- IList<ArraySegment<Byte>>
A fogadott adatok puffereinek listája.
Válaszok
Az aszinkron fogadási műveletet képviselő feladat. A tulajdonság értéke Result a pufferekbe beolvasott bájtok teljes számát tartalmazza nulla (0) és a kért bájtok száma között. Az eredmény értéke csak akkor nulla (0), 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. Ha nulla bájtot kérnek, a fogadási műveletek azonnal befejeződhetnek, vagy nem fejeződhetnek be, amíg legalább egy bájt el nem érhető (de adatok felhasználása nélkül).
Kivételek
A buffers paraméter null értékű volt.
A Socket le van zárva.
Hiba történt a szoftvercsatorna elérésekor.
Megjegyzések
Ez a metódus a feladatban tárolja az összes olyan nem használati kivételt, amelyet a metódus szinkron megfelelője tud dobni. Ha egy kivételt tárol a visszaadott tevékenységben, akkor a rendszer akkor küldi el a kivételt, amikor a feladatra vár. A használati kivételek(például ArgumentException) továbbra is szinkron módon jelennek meg. A tárolt kivételekről lásd a következő által Receive(IList<ArraySegment<Byte>>)kiadott kivételeket: .
A következőre érvényes:
ReceiveAsync(SocketAsyncEventArgs)
- Forrás:
- Socket.cs
- Forrás:
- Socket.cs
- Forrás:
- Socket.cs
- Forrás:
- Socket.cs
- Forrás:
- Socket.cs
Elindít egy aszinkron kérést, amely adatokat fogad egy csatlakoztatott Socket objektumból.
public:
bool ReceiveAsync(System::Net::Sockets::SocketAsyncEventArgs ^ e);
public bool ReceiveAsync(System.Net.Sockets.SocketAsyncEventArgs e);
member this.ReceiveAsync : System.Net.Sockets.SocketAsyncEventArgs -> bool
Public Function ReceiveAsync (e As SocketAsyncEventArgs) As Boolean
Paraméterek
Az SocketAsyncEventArgs aszinkron szoftvercsatorna-művelethez használni kívánt objektum.
Válaszok
true ha az I/O-művelet függőben van. A Completed paraméter eseménye a e művelet befejezésekor lesz előállítva.
false ha az I/O-művelet szinkron módon fejeződött be. Ebben az esetben a Completed paraméter eseménye nem lesz előállítva, e és a e paraméterként átadott objektum azonnal megvizsgálható, miután a metódushívás visszatér a művelet eredményének lekéréséhez.
Kivételek
Érvénytelen argumentum volt. A Buffer paraméter vagy BufferList tulajdonságoknak e érvényes pufferekre kell hivatkoznia. Ezen tulajdonságok egyikét vagy másikát lehet beállítani, de egyszerre nem mindkettőt.
A szoftvercsatorna-művelet már folyamatban volt a SocketAsyncEventArgs paraméterben e megadott objektummal.
A Socket le van zárva.
Hiba történt a szoftvercsatorna elérésekor.
Megjegyzések
A ReceiveAsync metódust csatlakoztatott szoftvercsatornákon vagy kötött kapcsolat nélküli szoftvercsatornákon használják, és a bejövő adatok olvasására szolgál. A szoftvercsatorna helyi címének ismertnek kell lennie.
Kötött kapcsolat nélküli szoftvercsatornák esetén ez a függvény korlátozza azokat a címeket, amelyekről a fogadott üzenetek fogadva vannak. A függvény csak a kapcsolatban megadott távoli címről küld üzeneteket. A többi címről érkező üzeneteket a rendszer csendesen elveti.
A SocketAsyncEventArgs.SocketFlags paraméter tulajdonsága e további információkat biztosít a Windows Sockets szolgáltatónak az olvasási kérelemről. További információ a paraméter használatáról: System.Net.Sockets.SocketFlags.
A metódus sikeres meghívásához a következő tulajdonságokra és eseményekre van szükség az System.Net.Sockets.SocketAsyncEventArgs objektumon:
SocketAsyncEventArgs.Buffer vagy SocketAsyncEventArgs.BufferList
SocketAsyncEventArgs.Count ha SocketAsyncEventArgs.Buffer be van állítva
SocketAsyncEventArgs.Offset ha SocketAsyncEventArgs.Buffer be van állítva
A hívó a SocketAsyncEventArgs.UserToken metódus meghívása előtt bármilyen felhasználói állapotobjektumra beállíthatja a ReceiveAsync tulajdonságot, hogy az információk lekérthetők legyenek a visszahívási metódusban. Ha a visszahívásnak több információra van szüksége, mint egyetlen objektum, létrehozhat egy kis osztályt, amely tagként tárolja a többi szükséges állapotinformációt.
Byte stream stílusú szoftvercsatornák esetén a bejövő adatok a pufferbe kerülnek, amíg meg nem töltik a puffert, bezárják a kapcsolatot, vagy a belsőleg pufferelt adatok kimerülnek.
Üzenetorientált szoftvercsatornák esetén a rendszer a bejövő üzeneteket a pufferbe helyezi a paraméterhez e társított puffer teljes méretének megfelelő méretig. Ha az üzenet nagyobb, mint a puffer, a puffer az üzenet első részével van kitöltve.
A kapcsolatorientált szoftvercsatornák esetében a ReceiveAsync metódus a virtuális kapcsolatcsoport kecses leállítását két módon jelezheti, amelyek attól függenek, hogy a szoftvercsatorna bájtfolyam- vagy üzenetorientált-e. A bájtfolyamok esetében az olvasás nélküli bájtok kecses lezárást jeleznek, és soha nem lesz több bájt beolvasva. Az üzenetorientált szoftvercsatornák esetében, ahol a nulla bájtos üzenet gyakran engedélyezhető, SocketException a SocketAsyncEventArgs.SocketError rendszer a natív Winsock WSAEDISCON hibakódra (10101) állítja a kecses lezárást. Mindenesetre a SocketException natív Winsock WSAECONNRESET hibakódra (10054) beállított érték azt jelzi, SocketAsyncEventArgs.SocketError hogy a rendszer megszakította a bezárást.
Lásd még
A következőre érvényes:
ReceiveAsync(ArraySegment<Byte>, SocketFlags)
- Forrás:
- Socket.Tasks.cs
- Forrás:
- Socket.Tasks.cs
- Forrás:
- Socket.Tasks.cs
- Forrás:
- Socket.Tasks.cs
- Forrás:
- Socket.Tasks.cs
Adatokat fogad egy csatlakoztatott szoftvercsatornából.
public:
System::Threading::Tasks::Task<int> ^ ReceiveAsync(ArraySegment<System::Byte> buffer, System::Net::Sockets::SocketFlags socketFlags);
public System.Threading.Tasks.Task<int> ReceiveAsync(ArraySegment<byte> buffer, System.Net.Sockets.SocketFlags socketFlags);
member this.ReceiveAsync : ArraySegment<byte> * System.Net.Sockets.SocketFlags -> System.Threading.Tasks.Task<int>
Public Function ReceiveAsync (buffer As ArraySegment(Of Byte), socketFlags As SocketFlags) As Task(Of Integer)
Paraméterek
- buffer
- ArraySegment<Byte>
A fogadott adatok puffere.
- socketFlags
- SocketFlags
A SocketFlags értékek bitenkénti kombinációja, amelyet az adatok fogadásakor használunk.
Válaszok
Az aszinkron fogadási műveletet képviselő feladat. A tulajdonság értéke Result a nulla (0) és a kért bájtok száma között beolvasott buffer bájtok teljes számát tartalmazza. Az eredmény értéke csak akkor nulla (0), 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. Ha nulla bájtot kérnek, a fogadási műveletek azonnal befejeződhetnek, vagy nem fejeződhetnek be, amíg legalább egy bájt el nem érhető (de adatok felhasználása nélkül).
Kivételek
A Socket le van zárva.
Hiba történt a szoftvercsatorna elérésekor.
A következőre érvényes:
ReceiveAsync(IList<ArraySegment<Byte>>, SocketFlags)
- Forrás:
- Socket.Tasks.cs
- Forrás:
- Socket.Tasks.cs
- Forrás:
- Socket.Tasks.cs
- Forrás:
- Socket.Tasks.cs
- Forrás:
- Socket.Tasks.cs
Adatokat fogad egy csatlakoztatott szoftvercsatornából.
public:
System::Threading::Tasks::Task<int> ^ ReceiveAsync(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers, System::Net::Sockets::SocketFlags socketFlags);
public System.Threading.Tasks.Task<int> ReceiveAsync(System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags);
member this.ReceiveAsync : System.Collections.Generic.IList<ArraySegment<byte>> * System.Net.Sockets.SocketFlags -> System.Threading.Tasks.Task<int>
Public Function ReceiveAsync (buffers As IList(Of ArraySegment(Of Byte)), socketFlags As SocketFlags) As Task(Of Integer)
Paraméterek
- buffers
- IList<ArraySegment<Byte>>
A fogadott adatok puffereinek listája.
- socketFlags
- SocketFlags
A SocketFlags értékek bitenkénti kombinációja, amelyet az adatok fogadásakor használunk.
Válaszok
Az aszinkron fogadási műveletet képviselő feladat. A tulajdonság értéke Result a nulla (0) és a kért bájtok száma között beolvasott buffer bájtok teljes számát tartalmazza. Az eredmény értéke csak akkor nulla (0), 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. Ha nulla bájtot kérnek, a fogadási műveletek azonnal befejeződhetnek, vagy nem fejeződhetnek be, amíg legalább egy bájt el nem érhető (de adatok felhasználása nélkül).
Kivételek
A buffers paraméter null értékű volt.
A Socket le van zárva.
Hiba történt a szoftvercsatorna elérésekor.
Megjegyzések
Ez a metódus a feladatban tárolja az összes olyan nem használati kivételt, amelyet a metódus szinkron megfelelője tud dobni. Ha egy kivételt tárol a visszaadott tevékenységben, akkor a rendszer akkor küldi el a kivételt, amikor a feladatra vár. A használati kivételek(például ArgumentException) továbbra is szinkron módon jelennek meg. A tárolt kivételekről lásd a következő által Receive(IList<ArraySegment<Byte>>, SocketFlags)kiadott kivételeket: .
A következőre érvényes:
ReceiveAsync(Memory<Byte>, CancellationToken)
- Forrás:
- Socket.Tasks.cs
- Forrás:
- Socket.Tasks.cs
- Forrás:
- Socket.Tasks.cs
- Forrás:
- Socket.Tasks.cs
- Forrás:
- Socket.Tasks.cs
Adatokat fogad egy csatlakoztatott szoftvercsatornából.
public System.Threading.Tasks.ValueTask<int> ReceiveAsync(Memory<byte> buffer, System.Threading.CancellationToken cancellationToken = default);
member this.ReceiveAsync : Memory<byte> * System.Threading.CancellationToken -> System.Threading.Tasks.ValueTask<int>
Public Function ReceiveAsync (buffer As Memory(Of Byte), Optional cancellationToken As CancellationToken = Nothing) As ValueTask(Of Integer)
Paraméterek
- cancellationToken
- CancellationToken
Az aszinkron művelet megszakításához használható lemondási jogkivonat.
Válaszok
Az ValueTask<TResult> aszinkron fogadási műveletet jelképező művelet. A tulajdonság értéke Result a nulla (0) és a kért bájtok száma között beolvasott buffer bájtok teljes számát tartalmazza. Az eredmény értéke csak akkor nulla (0), 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. Ha nulla bájtot kérnek, a fogadási műveletek azonnal befejeződhetnek, vagy nem fejeződhetnek be, amíg legalább egy bájt el nem érhető (de adatok felhasználása nélkül).
Kivételek
A Socket le van zárva.
Hiba történt a szoftvercsatorna elérésekor.
A lemondási jogkivonat megszakadt. Ezt a kivételt a rendszer a visszaadott tevékenységben tárolja.
A következőre érvényes:
ReceiveAsync(Memory<Byte>, SocketFlags, CancellationToken)
- Forrás:
- Socket.Tasks.cs
- Forrás:
- Socket.Tasks.cs
- Forrás:
- Socket.Tasks.cs
- Forrás:
- Socket.Tasks.cs
- Forrás:
- Socket.Tasks.cs
Adatokat fogad egy csatlakoztatott szoftvercsatornából.
public System.Threading.Tasks.ValueTask<int> ReceiveAsync(Memory<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, System.Threading.CancellationToken cancellationToken = default);
member this.ReceiveAsync : Memory<byte> * System.Net.Sockets.SocketFlags * System.Threading.CancellationToken -> System.Threading.Tasks.ValueTask<int>
Public Function ReceiveAsync (buffer As Memory(Of Byte), socketFlags As SocketFlags, Optional cancellationToken As CancellationToken = Nothing) As ValueTask(Of Integer)
Paraméterek
- socketFlags
- SocketFlags
A SocketFlags értékek bitenkénti kombinációja, amelyet az adatok fogadásakor használunk.
- cancellationToken
- CancellationToken
Az aszinkron művelet megszakításához használható lemondási jogkivonat.
Válaszok
Az ValueTask<TResult> aszinkron fogadási műveletet jelképező művelet. A tulajdonság értéke Result a nulla (0) és a kért bájtok száma között beolvasott buffer bájtok teljes számát tartalmazza. Az eredmény értéke csak akkor nulla (0), 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. Ha nulla bájtot kérnek, a fogadási műveletek azonnal befejeződhetnek, vagy nem fejeződhetnek be, amíg legalább egy bájt el nem érhető (de adatok felhasználása nélkül).
Kivételek
A Socket le van zárva.
Hiba történt a szoftvercsatorna elérésekor.
A lemondási jogkivonat megszakadt. Ezt a kivételt a rendszer a visszaadott tevékenységben tárolja.