Udostępnij za pośrednictwem


Socket.SendAsync Metoda

Definicja

Przeciążenia

SendAsync(ReadOnlyMemory<Byte>, CancellationToken)

Wysyła dane do połączonego gniazda.

SendAsync(IList<ArraySegment<Byte>>, SocketFlags)

Wysyła dane do połączonego gniazda.

SendAsync(ArraySegment<Byte>, SocketFlags)

Wysyła dane do połączonego gniazda.

SendAsync(ReadOnlyMemory<Byte>, SocketFlags, CancellationToken)

Wysyła dane do połączonego gniazda.

SendAsync(IList<ArraySegment<Byte>>)

Wysyła dane do połączonego gniazda.

SendAsync(ArraySegment<Byte>)

Wysyła dane do połączonego gniazda.

SendAsync(SocketAsyncEventArgs)

Wysyła dane asynchronicznie do połączonego Socket obiektu.

SendAsync(ReadOnlyMemory<Byte>, CancellationToken)

Źródło:
Socket.Tasks.cs
Źródło:
Socket.Tasks.cs
Źródło:
Socket.Tasks.cs

Wysyła dane do połączonego gniazda.

public System.Threading.Tasks.ValueTask<int> SendAsync (ReadOnlyMemory<byte> buffer, System.Threading.CancellationToken cancellationToken = default);
member this.SendAsync : ReadOnlyMemory<byte> * System.Threading.CancellationToken -> System.Threading.Tasks.ValueTask<int>
Public Function SendAsync (buffer As ReadOnlyMemory(Of Byte), Optional cancellationToken As CancellationToken = Nothing) As ValueTask(Of Integer)

Parametry

buffer
ReadOnlyMemory<Byte>

Bufor danych do wysłania.

cancellationToken
CancellationToken

Token anulowania, który może służyć do anulowania operacji asynchronicznej.

Zwraca

Zadanie asynchroniczne, które kończy się liczbą wysłanych bajtów.

Wyjątki

Token anulowania został anulowany. Ten wyjątek jest przechowywany w zwróconym zadaniu.

Dotyczy

SendAsync(IList<ArraySegment<Byte>>, SocketFlags)

Źródło:
Socket.Tasks.cs
Źródło:
Socket.Tasks.cs
Źródło:
Socket.Tasks.cs

Wysyła dane do połączonego gniazda.

public:
 System::Threading::Tasks::Task<int> ^ SendAsync(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers, System::Net::Sockets::SocketFlags socketFlags);
public System.Threading.Tasks.Task<int> SendAsync (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags);
member this.SendAsync : System.Collections.Generic.IList<ArraySegment<byte>> * System.Net.Sockets.SocketFlags -> System.Threading.Tasks.Task<int>
Public Function SendAsync (buffers As IList(Of ArraySegment(Of Byte)), socketFlags As SocketFlags) As Task(Of Integer)

Parametry

buffers
IList<ArraySegment<Byte>>

Lista buforów do wysłania danych.

socketFlags
SocketFlags

Bitowa kombinacja wartości SocketFlags, które będą używane podczas wysyłania danych.

Zwraca

Zadanie asynchroniczne, które kończy się liczbą wysłanych bajtów.

Wyjątki

buffers to null.

Wystąpił błąd podczas próby uzyskania dostępu do gniazda.

Została zamknięta Socket .

Uwagi

Ta metoda przechowuje w zadaniu wszystkie wyjątki inne niż użycie, które mogą zgłaszać synchroniczna odpowiednik metody. Jeśli wyjątek jest przechowywany w zwróconym zadaniu, ten wyjątek zostanie zgłoszony po oczekiwaniu na zadanie. Wyjątki użycia, takie jak ArgumentException, są nadal zgłaszane synchronicznie. Aby uzyskać informacje o przechowywanych wyjątkach, zobacz wyjątki zgłaszane przez Send(IList<ArraySegment<Byte>>, SocketFlags)usługę .

Dotyczy

SendAsync(ArraySegment<Byte>, SocketFlags)

Źródło:
Socket.Tasks.cs
Źródło:
Socket.Tasks.cs
Źródło:
Socket.Tasks.cs

Wysyła dane do połączonego gniazda.

public:
 System::Threading::Tasks::Task<int> ^ SendAsync(ArraySegment<System::Byte> buffer, System::Net::Sockets::SocketFlags socketFlags);
public System.Threading.Tasks.Task<int> SendAsync (ArraySegment<byte> buffer, System.Net.Sockets.SocketFlags socketFlags);
member this.SendAsync : ArraySegment<byte> * System.Net.Sockets.SocketFlags -> System.Threading.Tasks.Task<int>
Public Function SendAsync (buffer As ArraySegment(Of Byte), socketFlags As SocketFlags) As Task(Of Integer)

Parametry

buffer
ArraySegment<Byte>

Bufor danych do wysłania.

socketFlags
SocketFlags

Bitowa kombinacja wartości SocketFlags, które będą używane podczas wysyłania danych.

Zwraca

Zadanie asynchroniczne, które kończy się liczbą wysłanych bajtów.

Wyjątki

Wystąpił błąd podczas próby uzyskania dostępu do gniazda.

Została zamknięta Socket .

Dotyczy

SendAsync(ReadOnlyMemory<Byte>, SocketFlags, CancellationToken)

Źródło:
Socket.Tasks.cs
Źródło:
Socket.Tasks.cs
Źródło:
Socket.Tasks.cs

Wysyła dane do połączonego gniazda.

public System.Threading.Tasks.ValueTask<int> SendAsync (ReadOnlyMemory<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, System.Threading.CancellationToken cancellationToken = default);
member this.SendAsync : ReadOnlyMemory<byte> * System.Net.Sockets.SocketFlags * System.Threading.CancellationToken -> System.Threading.Tasks.ValueTask<int>
Public Function SendAsync (buffer As ReadOnlyMemory(Of Byte), socketFlags As SocketFlags, Optional cancellationToken As CancellationToken = Nothing) As ValueTask(Of Integer)

Parametry

buffer
ReadOnlyMemory<Byte>

Bufor danych do wysłania.

socketFlags
SocketFlags

Bitowa kombinacja wartości SocketFlags, które będą używane podczas wysyłania danych.

cancellationToken
CancellationToken

Token anulowania, który może służyć do anulowania operacji asynchronicznej.

Zwraca

Zadanie asynchroniczne, które kończy się liczbą wysłanych bajtów.

Wyjątki

Wystąpił błąd podczas próby uzyskania dostępu do gniazda.

Została zamknięta Socket .

Token anulowania został anulowany. Ten wyjątek jest przechowywany w zwróconym zadaniu.

Dotyczy

SendAsync(IList<ArraySegment<Byte>>)

Źródło:
Socket.Tasks.cs
Źródło:
Socket.Tasks.cs
Źródło:
Socket.Tasks.cs

Wysyła dane do połączonego gniazda.

public:
 System::Threading::Tasks::Task<int> ^ SendAsync(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers);
public System.Threading.Tasks.Task<int> SendAsync (System.Collections.Generic.IList<ArraySegment<byte>> buffers);
member this.SendAsync : System.Collections.Generic.IList<ArraySegment<byte>> -> System.Threading.Tasks.Task<int>
Public Function SendAsync (buffers As IList(Of ArraySegment(Of Byte))) As Task(Of Integer)

Parametry

buffers
IList<ArraySegment<Byte>>

Lista buforów do wysłania danych.

Zwraca

Zadanie asynchroniczne, które kończy się liczbą wysłanych bajtów.

Wyjątki

buffers to null.

Wystąpił błąd podczas próby uzyskania dostępu do gniazda.

Została zamknięta Socket .

Uwagi

Ta metoda przechowuje w zadaniu wszystkie wyjątki inne niż użycie, które mogą zgłaszać synchroniczna odpowiednik metody. Jeśli wyjątek jest przechowywany w zwróconym zadaniu, ten wyjątek zostanie zgłoszony po oczekiwaniu na zadanie. Wyjątki użycia, takie jak ArgumentException, są nadal zgłaszane synchronicznie. Aby uzyskać informacje o przechowywanych wyjątkach, zobacz wyjątki zgłaszane przez Send(IList<ArraySegment<Byte>>)usługę .

Dotyczy

SendAsync(ArraySegment<Byte>)

Źródło:
Socket.Tasks.cs
Źródło:
Socket.Tasks.cs
Źródło:
Socket.Tasks.cs

Wysyła dane do połączonego gniazda.

public:
 System::Threading::Tasks::Task<int> ^ SendAsync(ArraySegment<System::Byte> buffer);
public System.Threading.Tasks.Task<int> SendAsync (ArraySegment<byte> buffer);
member this.SendAsync : ArraySegment<byte> -> System.Threading.Tasks.Task<int>
Public Function SendAsync (buffer As ArraySegment(Of Byte)) As Task(Of Integer)

Parametry

buffer
ArraySegment<Byte>

Bufor danych do wysłania.

Zwraca

Zadanie asynchroniczne, które kończy się liczbą wysłanych bajtów.

Wyjątki

Wystąpił błąd podczas próby uzyskania dostępu do gniazda.

Została zamknięta Socket .

Dotyczy

SendAsync(SocketAsyncEventArgs)

Źródło:
Socket.cs
Źródło:
Socket.cs
Źródło:
Socket.cs

Wysyła dane asynchronicznie do połączonego Socket obiektu.

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

Parametry

e
SocketAsyncEventArgs

Obiekt SocketAsyncEventArgs do użycia dla tej operacji asynchronicznego gniazda.

Zwraca

true jeśli operacja we/wy jest oczekująca. Zdarzenie Completed parametru e zostanie podniesione po zakończeniu operacji.

false jeśli operacja we/wy została ukończona synchronicznie. W takim przypadku Completed zdarzenie parametru e nie zostanie podniesione, a e obiekt przekazany jako parametr może zostać zbadany natychmiast po powrocie wywołania metody w celu pobrania wyniku operacji.

Wyjątki

Właściwości Buffer lub BufferList parametru e muszą odwoływać się do prawidłowych buforów. Można ustawić jedną lub drugą z tych właściwości, ale nie obie w tym samym czasie.

Operacja gniazda była już w toku przy użyciu SocketAsyncEventArgs obiektu określonego w parametrze e .

Została zamknięta Socket .

Obiekt Socket nie jest jeszcze połączony lub nie został uzyskany za pośrednictwem Accept()metody , AcceptAsync(SocketAsyncEventArgs)lub BeginAccept.

Uwagi

Metoda SendAsync służy do zapisywania danych wychodzących z co najmniej jednego buforu na gniazdie zorientowanym na połączenie. Tę metodę można również użyć w przypadku gniazd bez połączenia, które określiły hosta zdalnego w operacji łączenia.

Metoda SendAsync uruchamia operację wysyłania asynchronicznego do hosta zdalnego ustanowionego w metodzie Accept, AcceptAsync, BeginAccept, BeginConnect, Connectlub ConnectAsync .

Następujące właściwości i zdarzenia obiektu są wymagane do pomyślnego System.Net.Sockets.SocketAsyncEventArgs wywołania tej metody:

Obiekt wywołujący może ustawić SocketAsyncEventArgs.UserToken właściwość na dowolny obiekt stanu użytkownika żądany przed wywołaniem SendAsync metody, aby informacje mogły zostać pobrane w metodzie wywołania zwrotnego. Jeśli wywołanie zwrotne wymaga więcej informacji niż pojedynczy obiekt, można utworzyć małą klasę, aby przechowywać inne wymagane informacje o stanie jako elementy członkowskie.

Metoda SendAsync zgłosi wyjątek, jeśli nie najpierw wywołasz metody Accept, , AcceptAsyncBeginConnectBeginAccept, Connectlub .ConnectAsync

SendAsync Wywołanie metody zapewnia możliwość wysyłania danych w osobnym wątku wykonywania.

W przypadku gniazd zorientowanych na komunikaty nie przekraczaj maksymalnego rozmiaru komunikatów bazowego dostawcy usług gniazd systemu Windows. Jeśli dane są zbyt długie, aby przekazać niepodzielnie przez bazowego dostawcę usług, żadne dane nie są przesyłane, a SendAsync metoda zgłasza SocketException wartość z SocketAsyncEventArgs.SocketError ustawionym kodem błędu Winsock WSAEMSGSIZE (10040).

Należy pamiętać, że pomyślne ukończenie SendAsync metody nie wskazuje, że dane zostały pomyślnie dostarczone.

Zobacz też

Dotyczy