Socket.SendAsync(SocketAsyncEventArgs) 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.
Aszinkron módon küld adatokat egy csatlakoztatott Socket objektumnak.
public:
bool SendAsync(System::Net::Sockets::SocketAsyncEventArgs ^ e);
public bool SendAsync(System.Net.Sockets.SocketAsyncEventArgs e);
member this.SendAsync : System.Net.Sockets.SocketAsyncEventArgs -> bool
Public Function SendAsync (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 e paraméter eseménye nem lesz előállítva, Completed é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
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.
Ez Socket még nincs csatlakoztatva, vagy nem egy , AcceptAsync(SocketAsyncEventArgs)vagy BeginAccept, metóduson keresztül Accept()lett beszerezve.
Megjegyzések
A SendAsync metódussal kimenő adatokat írhat egy vagy több pufferből egy kapcsolatorientált szoftvercsatornára. Ez a módszer azonban olyan kapcsolat nélküli szoftvercsatornákon is használható, amelyek egy távoli gazdagépet adott meg egy kapcsolódási művelethez.
A SendAsync metódus elindít egy aszinkron küldési műveletet a , AcceptAsync, , BeginAcceptBeginConnect, Connectvagy ConnectAsync metódusban Acceptlétrehozott távoli gazdagépre.
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 SendAsync 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.
A SendAsync metódus kivételt fog eredményezni, ha nem hívja Acceptmeg először a , AcceptAsync, BeginAcceptBeginConnect, Connectvagy ConnectAsync.
A metódus meghívásával SendAsync külön végrehajtási szálon belül küldhet adatokat.
Üzenetorientált szoftvercsatornák esetén ne lépje túl a mögöttes Windows szoftvercsatornák szolgáltatójának maximális üzenetméretét. Ha az adatok túl hosszúak ahhoz, hogy atomilag áthaladjanak a mögöttes SocketException szolgáltatón, a rendszer nem továbbít adatokat, és a SendAsync metódus a halmazt SocketAsyncEventArgs.SocketError a natív Winsock WSAEMSGSIZE hibakódra (10040) dobja.
Vegye figyelembe, hogy a SendAsync metódus sikeres befejezése nem jelzi az adatok sikeres kézbesítését.