Socket.SendAsync(SocketAsyncEventArgs) Metódus

Definíció

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

e
SocketAsyncEventArgs

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:

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.

A következőre érvényes:

Lásd még