Socket.SendPacketsAsync(SocketAsyncEventArgs) Methode

Definitie

Hiermee wordt een verzameling bestanden of in geheugengegevensbuffers asynchroon verzonden naar een verbonden Socket object.

public:
 bool SendPacketsAsync(System::Net::Sockets::SocketAsyncEventArgs ^ e);
public bool SendPacketsAsync(System.Net.Sockets.SocketAsyncEventArgs e);
member this.SendPacketsAsync : System.Net.Sockets.SocketAsyncEventArgs -> bool
Public Function SendPacketsAsync (e As SocketAsyncEventArgs) As Boolean

Parameters

e
SocketAsyncEventArgs

Het SocketAsyncEventArgs object dat moet worden gebruikt voor deze asynchrone socketbewerking.

Retouren

true als de I/O-bewerking in behandeling is. De Completed gebeurtenis voor de e parameter wordt gegenereerd na voltooiing van de bewerking.

false als de I/O-bewerking synchroon is voltooid. In dit geval wordt de Completed gebeurtenis voor de e parameter niet gegenereerd en kan het e object dat als parameter wordt doorgegeven, direct worden onderzocht nadat de methodeaanroep terugkeert om het resultaat van de bewerking op te halen.

Uitzonderingen

Het bestand dat is opgegeven in de FilePath eigenschap, is niet gevonden.

Er is al een socketbewerking uitgevoerd met behulp van het SocketAsyncEventArgs object dat is opgegeven in de e parameter.

De Socket verbinding is niet met een externe host.

Er wordt een verbindingloos Socket gebruikt en het bestand dat wordt verzonden, overschrijdt de maximale pakketgrootte van het onderliggende transport.

Opmerkingen

De SendPacketsAsync methode wordt gebruikt voor het verzenden van een verzameling bestanden of in geheugengegevensbuffers naar een externe host. De Socket moet al zijn verbonden met de externe host.

Als een System.Net.Sockets.SendPacketsElement bestand in de werkmap verwijst, kan het worden geïdentificeerd met alleen de naam van het bestand. Anders moet het volledige pad en de naam van het bestand worden opgegeven. Jokertekens en UNC-sharenamen worden ondersteund. Als het bestand niet wordt gevonden, FileNotFoundException wordt het gegenereerd.

Als u op de hoogte wilt worden gesteld van voltooiing, moet u een callback-methode maken waarmee de gemachtigde EventHandler<SocketAsyncEventArgs> wordt geïmplementeerd en de callback aan de SocketAsyncEventArgs.Completed gebeurtenis wordt gekoppeld.

De SocketAsyncEventArgs.SendPacketsFlags eigenschap op de e parameter biedt de Window Sockets-serviceprovider aanvullende informatie over de bestandsoverdracht. Zie voor meer informatie over het gebruik van deze parameter TransmitFileOptions.

De volgende eigenschappen en gebeurtenissen op het System.Net.Sockets.SocketAsyncEventArgs object zijn vereist om deze methode aan te roepen:

De aanroeper kan de SocketAsyncEventArgs.UserToken eigenschap instellen op een gewenst gebruikersstatusobject voordat de SendPacketsAsync methode wordt aangeroepen, zodat de gegevens kunnen worden opgehaald in de callback-methode. Als de callback meer informatie nodig heeft dan één object, kan er een kleine klasse worden gemaakt om de andere vereiste statusgegevens als leden te bewaren.

Deze methode maakt gebruik van de functie TransmitPackets die is gevonden in de Windows Sockets 2-API. Zie de documentatie Windows Sockets voor meer informatie over de functie TransmitPackets en de bijbehorende vlaggen.

Hoewel deze is bedoeld voor verbindingsgeoriënteerde protocollen, werkt de SendPacketsAsync methode ook voor verbindingsloze protocollen, mits u eerst de BeginConnect, Connectof ConnectAsync methode aanroept om een standaard externe host tot stand te brengen. Met verbindingsloze protocollen moet u er ook voor zorgen dat de grootte van uw bestand niet groter is dan de maximale pakketgrootte van de onderliggende serviceprovider. Als dit het geval is, wordt het datagram niet verzonden en SendPacketsAsync wordt er een SocketException uitzondering gegenereerd.

De SendPacketsAsync methode is geoptimaliseerd op basis van het besturingssysteem waarop deze wordt gebruikt. Op Windows serverversies is de methode SendPacketsAsync geoptimaliseerd voor hoge prestaties.

In Windows clientversies is de methode SendPacketsAsync geoptimaliseerd voor minimaal geheugen- en resourcegebruik.

Het gebruik van de TransmitFileOptions.UseKernelApc vlag in de SocketAsyncEventArgs.SendPacketsFlags eigenschap op de e parameter kan aanzienlijke prestatievoordelen opleveren. Als de thread die de SendPacketsAsync methode-aanroep start, wordt gebruikt voor zware berekeningen, is het mogelijk, hoewel onwaarschijnlijk, dat APCs niet kunnen worden gestart. Houd er rekening mee dat er een verschil is tussen kernel- en gebruikersmodus-API's. Kernel-API's worden gestart wanneer een thread een wachtstatus heeft. Gebruikersmodus-API's worden gestart wanneer een thread een waarschuwingsstatus heeft

Van toepassing op

Zie ook