Socket.AcceptAsync Metod

Definition

Överlagringar

Name Description
AcceptAsync()

Accepterar en inkommande anslutning.

AcceptAsync(Socket)

Accepterar en inkommande anslutning.

AcceptAsync(SocketAsyncEventArgs)

Påbörjar en asynkron åtgärd för att acceptera ett inkommande anslutningsförsök.

AcceptAsync(CancellationToken)

Accepterar en inkommande anslutning.

AcceptAsync(Socket, CancellationToken)

Accepterar en inkommande anslutning.

AcceptAsync()

Källa:
Socket.Tasks.cs
Källa:
Socket.Tasks.cs
Källa:
Socket.Tasks.cs
Källa:
Socket.Tasks.cs
Källa:
Socket.Tasks.cs

Accepterar en inkommande anslutning.

public:
 System::Threading::Tasks::Task<System::Net::Sockets::Socket ^> ^ AcceptAsync();
public System.Threading.Tasks.Task<System.Net.Sockets.Socket> AcceptAsync();
member this.AcceptAsync : unit -> System.Threading.Tasks.Task<System.Net.Sockets.Socket>
Public Function AcceptAsync () As Task(Of Socket)

Returer

En asynkron uppgift som slutförs med den godkända socketen.

Undantag

En ogiltig åtgärd begärdes. Det här undantaget inträffar om godkännandet Socket inte lyssnar efter anslutningar eller om den godkända socketen är bunden.

Du måste anropa Bind(EndPoint) metoden och Listen(Int32) innan du AcceptAsync(SocketAsyncEventArgs) anropar metoden.

Ett fel uppstod vid försök att komma åt socketen.

Kommentarer

Den här metoden lagrar i aktiviteten som returnerar alla undantag som inte används som metodens synkrona motsvarighet kan utlösa. Om ett undantag lagras i den returnerade aktiviteten utlöses undantaget när aktiviteten väntar. Användningsfel, till exempel ArgumentException, genereras fortfarande synkront. De lagrade undantagen finns i undantagen som genereras av Accept().

Gäller för

AcceptAsync(Socket)

Källa:
Socket.Tasks.cs
Källa:
Socket.Tasks.cs
Källa:
Socket.Tasks.cs
Källa:
Socket.Tasks.cs
Källa:
Socket.Tasks.cs

Accepterar en inkommande anslutning.

public:
 System::Threading::Tasks::Task<System::Net::Sockets::Socket ^> ^ AcceptAsync(System::Net::Sockets::Socket ^ acceptSocket);
public System.Threading.Tasks.Task<System.Net.Sockets.Socket> AcceptAsync(System.Net.Sockets.Socket? acceptSocket);
member this.AcceptAsync : System.Net.Sockets.Socket -> System.Threading.Tasks.Task<System.Net.Sockets.Socket>
Public Function AcceptAsync (acceptSocket As Socket) As Task(Of Socket)

Parametrar

acceptSocket
Socket

Den socket som ska användas för att acceptera anslutningen.

Returer

En asynkron uppgift som slutförs med den godkända socketen.

Undantag

En ogiltig åtgärd begärdes. Det här undantaget inträffar om godkännandet Socket inte lyssnar efter anslutningar eller om den godkända socketen är bunden.

Du måste anropa Bind(EndPoint) metoden och Listen(Int32) innan du AcceptAsync(SocketAsyncEventArgs) anropar metoden.

Ett fel uppstod vid försök att komma åt socketen.

Gäller för

AcceptAsync(SocketAsyncEventArgs)

Källa:
Socket.cs
Källa:
Socket.cs
Källa:
Socket.cs
Källa:
Socket.cs
Källa:
Socket.cs

Påbörjar en asynkron åtgärd för att acceptera ett inkommande anslutningsförsök.

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

Parametrar

e
SocketAsyncEventArgs

Objektet SocketAsyncEventArgs som ska användas för den här asynkrona socketåtgärden.

Returer

true om I/O-åtgärden väntar. Händelsen Completed på parametern e utlöses när åtgärden har slutförts.

false om I/O-åtgärden slutfördes synkront. Händelsen Completed på parametern e utlöses inte och objektet e som skickas som en parameter kan undersökas omedelbart efter att metodanropet returnerar för att hämta resultatet av åtgärden.

Undantag

Ett argument är ogiltigt. Det här undantaget inträffar om bufferten som tillhandahålls inte är tillräckligt stor. Bufferten måste vara minst 2 * (sizeof(SOCKADDR_STORAGE + 16)) byte.

Det här undantaget inträffar också om flera buffertar anges, egenskapen BufferList är inte null.

Ett argument ligger utom räckhåll. Undantaget inträffar om är Count mindre än 0.

En ogiltig åtgärd begärdes. Det här undantaget inträffar om godkännandet Socket inte lyssnar efter anslutningar eller om den godkända socketen är bunden.

Du måste anropa Bind(EndPoint) metoden och Listen(Int32) innan du AcceptAsync(SocketAsyncEventArgs) anropar metoden.

Det här undantaget inträffar också om socketen redan är ansluten eller om en socketåtgärd redan pågår med den angivna e parametern.

Ett fel uppstod vid försök att komma åt socketen.

Kommentarer

Anslutningsorienterade protokoll kan använda AcceptAsync metoden för att asynkront bearbeta inkommande anslutningsförsök. Om du accepterar anslutningar asynkront kan du skicka och ta emot data i en separat körningstråd. Innan du anropar AcceptAsync metoden måste du anropa Listen metoden för att lyssna efter och köa inkommande anslutningsbegäranden.

För att meddelas om slutförandet måste du skapa en motringningsmetod som implementerar EventHandler<SocketAsyncEventArgs-ombudet>SocketAsyncEventArgs.Completed och kopplar den till händelsen.

Följande egenskaper och händelser för System.Net.Sockets.SocketAsyncEventArgs objektet krävs:

Anroparen kan också ange en befintlig Socket som ska användas för den inkommande anslutningen genom att ange vilken Socket som ska användas med SocketAsyncEventArgs.AcceptSocket egenskapen.

Om egenskapen SocketAsyncEventArgs.AcceptSocket är null skapas en ny Socket med samma AddressFamily, SocketTypeoch ProtocolType som aktuell Socket och inställd som SocketAsyncEventArgs.AcceptSocket egenskapen .

Anroparen kan ange SocketAsyncEventArgs.UserToken egenskapen till valfritt användartillståndsobjekt som önskas innan metoden anropas AcceptAsync , så att informationen kan hämtas i motringningsmetoden. Om återanropet behöver mer information än ett enskilt objekt kan en liten klass skapas för att lagra den andra nödvändiga tillståndsinformationen som medlemmar.

Du kan också ange en buffert där du kan ta emot det första datablocket på socketen ConnectAsync när metoden har slutförts. I det här fallet SocketAsyncEventArgs.Buffer måste egenskapen anges till bufferten som innehåller de data som ska tas emot och SocketAsyncEventArgs.Count egenskapen måste anges till det maximala antalet byte data som ska tas emot i bufferten. Dessa egenskaper kan anges med hjälp av SocketAsyncEventArgs.SetBuffer metoden . En del av bufferten som skickas in används internt för användning av det underliggande Winsock AcceptEx-anropet. Det innebär att mängden data som returneras alltid är mindre än värdet SocketAsyncEventArgs.Count för egenskapen på den angivna instansen System.Net.Sockets.SocketAsyncEventArgs . Mängden buffert som används internt varierar beroende på socketens adressfamilj. Den minsta buffertstorlek som krävs är 288 byte. Om en större buffertstorlek anges Socket förväntar sig de ytterligare data än de adressdata som tas emot av Winsock AcceptEx-anropet och väntar tills dessa extra data tas emot. Om en timeout inträffar återställs anslutningen. Så om extra data förväntas av en viss mängd bör buffertstorleken anges till den minsta buffertstorleken plus den här mängden.

Metoden för återanrop bör undersöka SocketAsyncEventArgs.SocketError egenskapen för att avgöra om åtgärden AcceptAsync lyckades.

Händelsen SocketAsyncEventArgs.Completed kan inträffa i vissa fall när ingen anslutning har accepterats och gör SocketAsyncEventArgs.SocketError att egenskapen har angetts till ConnectionReset. Detta kan inträffa som ett resultat av portgenomsökning med hjälp av en halvöppen SYN-typgenomsökning (en SYN -> SYN-ACK -> RST-sekvens). Program som använder AcceptAsync metoden bör förberedas för att hantera det här villkoret.

Se även

Gäller för

AcceptAsync(CancellationToken)

Källa:
Socket.Tasks.cs
Källa:
Socket.Tasks.cs
Källa:
Socket.Tasks.cs
Källa:
Socket.Tasks.cs
Källa:
Socket.Tasks.cs

Accepterar en inkommande anslutning.

public:
 System::Threading::Tasks::ValueTask<System::Net::Sockets::Socket ^> AcceptAsync(System::Threading::CancellationToken cancellationToken);
public System.Threading.Tasks.ValueTask<System.Net.Sockets.Socket> AcceptAsync(System.Threading.CancellationToken cancellationToken);
member this.AcceptAsync : System.Threading.CancellationToken -> System.Threading.Tasks.ValueTask<System.Net.Sockets.Socket>
Public Function AcceptAsync (cancellationToken As CancellationToken) As ValueTask(Of Socket)

Parametrar

cancellationToken
CancellationToken

En annulleringstoken som kan användas för att avbryta den asynkrona åtgärden.

Returer

En asynkron uppgift som slutförs med den godkända socketen.

Undantag

En ogiltig åtgärd begärdes. Det här undantaget inträffar om godkännandet Socket inte lyssnar efter anslutningar eller om den godkända socketen är bunden.

Du måste anropa Bind(EndPoint) metoden och Listen(Int32) innan du AcceptAsync(SocketAsyncEventArgs) anropar metoden.

Ett fel uppstod vid försök att komma åt socketen.

Annulleringstoken avbröts. Det här undantaget lagras i den returnerade aktiviteten.

Kommentarer

Den här metoden lagrar i aktiviteten som returnerar alla undantag som inte används som metodens synkrona motsvarighet kan utlösa. Om ett undantag lagras i den returnerade aktiviteten utlöses undantaget när aktiviteten väntar. Användningsfel, till exempel ArgumentException, genereras fortfarande synkront. De lagrade undantagen finns i undantagen som genereras av Accept().

Gäller för

AcceptAsync(Socket, CancellationToken)

Källa:
Socket.Tasks.cs
Källa:
Socket.Tasks.cs
Källa:
Socket.Tasks.cs
Källa:
Socket.Tasks.cs
Källa:
Socket.Tasks.cs

Accepterar en inkommande anslutning.

public:
 System::Threading::Tasks::ValueTask<System::Net::Sockets::Socket ^> AcceptAsync(System::Net::Sockets::Socket ^ acceptSocket, System::Threading::CancellationToken cancellationToken);
public System.Threading.Tasks.ValueTask<System.Net.Sockets.Socket> AcceptAsync(System.Net.Sockets.Socket? acceptSocket, System.Threading.CancellationToken cancellationToken);
member this.AcceptAsync : System.Net.Sockets.Socket * System.Threading.CancellationToken -> System.Threading.Tasks.ValueTask<System.Net.Sockets.Socket>
Public Function AcceptAsync (acceptSocket As Socket, cancellationToken As CancellationToken) As ValueTask(Of Socket)

Parametrar

acceptSocket
Socket

Den socket som ska användas för att acceptera anslutningen.

cancellationToken
CancellationToken

En annulleringstoken som kan användas för att avbryta den asynkrona åtgärden.

Returer

En asynkron uppgift som slutförs med den godkända socketen.

Undantag

En ogiltig åtgärd begärdes. Det här undantaget inträffar om godkännandet Socket inte lyssnar efter anslutningar eller om den godkända socketen är bunden.

Du måste anropa Bind(EndPoint) metoden och Listen(Int32) innan du AcceptAsync(SocketAsyncEventArgs) anropar metoden.

Ett fel uppstod vid försök att komma åt socketen.

Annulleringstoken avbröts. Det här undantaget lagras i den returnerade aktiviteten.

Gäller för