Socket.SendToAsync Metoda

Definicja

Przeciążenia

SendToAsync(SocketAsyncEventArgs)

Wysyła dane asynchronicznie do określonego hosta zdalnego.

SendToAsync(ArraySegment<Byte>, EndPoint)

Wysyła dane do określonego hosta zdalnego.

SendToAsync(ArraySegment<Byte>, SocketFlags, EndPoint)

Wysyła dane do określonego hosta zdalnego.

SendToAsync(ReadOnlyMemory<Byte>, EndPoint, CancellationToken)

Wysyła dane do określonego hosta zdalnego.

SendToAsync(ReadOnlyMemory<Byte>, SocketFlags, EndPoint, CancellationToken)

Wysyła dane do określonego hosta zdalnego.

SendToAsync(ReadOnlyMemory<Byte>, SocketFlags, SocketAddress, CancellationToken)

Wysyła dane do określonego punktu końcowego przy użyciu określonego SocketFlagselementu .

SendToAsync(SocketAsyncEventArgs)

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

Wysyła dane asynchronicznie do określonego hosta zdalnego.

public:
 bool SendToAsync(System::Net::Sockets::SocketAsyncEventArgs ^ e);
public bool SendToAsync (System.Net.Sockets.SocketAsyncEventArgs e);
member this.SendToAsync : System.Net.Sockets.SocketAsyncEventArgs -> bool
Public Function SendToAsync (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 w parametrze 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 zgłoszone, a e obiekt przekazany jako parametr może zostać zbadany natychmiast po powrocie wywołania metody w celu pobrania wyniku operacji.

Wyjątki

Parametr RemoteEndPoint nie może mieć wartości null.

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

Element Socket został zamknięty.

Określony protokół jest zorientowany na połączenie, ale Socket nie jest jeszcze połączony.

Uwagi

Metoda SendToAsync uruchamia asynchroniczną operację wysyłania do hosta zdalnego określonego we SocketAsyncEventArgs.RemoteEndPoint właściwości parametru e . SendToAsync Wywołanie metody umożliwia wysyłanie danych w osobnym wątku wykonywania. Mimo że ta metoda jest przeznaczona dla protokołów bez połączenia, SendToAsync działa zarówno z protokołami bez połączenia, jak i zorientowanymi na połączenia.

Aby uzyskać powiadomienie o zakończeniu, należy utworzyć metodę wywołania zwrotnego, która implementuje delegata EventHandler<SocketAsyncEventArgs> i dołączyć wywołanie zwrotne do SocketAsyncEventArgs.Completed zdarzenia.

Następujące właściwości i zdarzenia obiektu System.Net.Sockets.SocketAsyncEventArgs są wymagane do pomyślnego 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 SendToAsync metody, aby informacje można było pobrać w metodzie wywołania zwrotnego. Jeśli wywołanie zwrotne wymaga więcej informacji niż pojedynczy obiekt, można utworzyć małą klasę do przechowywania innych wymaganych informacji o stanie jako elementów członkowskich.

Jeśli używasz protokołu zorientowanego na połączenie, musisz najpierw wywołać metodę Accept, , BeginAcceptAcceptAsync, BeginConnect, , Connectlub ConnectAsync . W przeciwnym razie SendToAsync zgłosi błąd SocketException. W przypadku korzystania z protokołu SendToAsync zorientowanego na połączenie metoda zignoruje SocketAsyncEventArgs.RemoteEndPoint właściwość i wyśle dane do System.Net.EndPoint metody , Accept, AcceptAsync, BeginAcceptBeginConnect, Connectlub ConnectAsync .

Jeśli używasz protokołu bez połączenia, nie musisz ustanawiać domyślnego hosta zdalnego za pomocą BeginConnectmetody , Connectlub ConnectAsync przed wywołaniem metody SendToAsync. Należy to zrobić tylko wtedy, gdy zamierzasz wywołać BeginSend metody lub SendAsync . Jeśli wywołasz metodę BeginConnect, Connectlub ConnectAsync przed wywołaniem SendToAsyncmetody , SocketAsyncEventArgs.RemoteEndPoint właściwość zastąpi określony domyślny host zdalny tylko dla tej operacji wysyłania. Nie jest również wymagane wywołanie Bind metody . W takim przypadku podstawowy dostawca usług przypisze najbardziej odpowiedni adres IP i numer portu sieci lokalnej. Użyj numeru portu zero, jeśli chcesz, aby podstawowy dostawca usług wybrał bezpłatny port. Jeśli musisz zidentyfikować przypisany adres IP i numer portu sieci lokalnej, możesz użyć LocalEndPoint właściwości po SocketAsyncEventArgs.Completed zasygnalizowanej zdarzeniu i wywołaniu skojarzonych delegatów.

Jeśli chcesz wysłać dane do adresu emisji, musisz najpierw wywołać metodę SetSocketOption i ustawić opcję gniazda dla SocketOptionName.Broadcast wartości true. Należy również upewnić się, że rozmiar buforu nie przekracza maksymalnego rozmiaru pakietu bazowego dostawcy usług. Jeśli tak się stanie, datagram nie zostanie wysłany i SendToAsync zgłosi błąd SocketException.

Jeśli określisz flagę SocketAsyncEventArgs.SocketFlags DontRoute we właściwości , wysyłane dane nie będą kierowane.

W przypadku gniazd zorientowanych na komunikaty należy zachować ostrożność, aby nie przekraczać maksymalnego rozmiaru komunikatu bazowego transportu. Jeśli rozmiar buforu przekracza maksymalny rozmiar pakietu bazowego dostawcy usług, datagram nie zostanie wysłany i SendToAsync zgłosi błąd SocketException. Pomyślne ukończenie SendToAsync metody nie wskazuje, że dane zostały pomyślnie dostarczone.

Zobacz też

Dotyczy

SendToAsync(ArraySegment<Byte>, EndPoint)

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

Wysyła dane do określonego hosta zdalnego.

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

Parametry

buffer
ArraySegment<Byte>

Bufor danych do wysłania.

remoteEP
EndPoint

Host zdalny, do którego mają być wysyłane dane.

Zwraca

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

Wyjątki

remoteEP to null.

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

Element Socket został zamknięty.

Dotyczy

SendToAsync(ArraySegment<Byte>, SocketFlags, EndPoint)

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

Wysyła dane do określonego hosta zdalnego.

public:
 System::Threading::Tasks::Task<int> ^ SendToAsync(ArraySegment<System::Byte> buffer, System::Net::Sockets::SocketFlags socketFlags, System::Net::EndPoint ^ remoteEP);
public System.Threading.Tasks.Task<int> SendToAsync (ArraySegment<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, System.Net.EndPoint remoteEP);
member this.SendToAsync : ArraySegment<byte> * System.Net.Sockets.SocketFlags * System.Net.EndPoint -> System.Threading.Tasks.Task<int>
Public Function SendToAsync (buffer As ArraySegment(Of Byte), socketFlags As SocketFlags, remoteEP As EndPoint) 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.

remoteEP
EndPoint

Host zdalny, do którego mają być wysyłane dane.

Zwraca

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

Wyjątki

remoteEP to null.

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

Element Socket został zamknięty.

Dotyczy

SendToAsync(ReadOnlyMemory<Byte>, EndPoint, CancellationToken)

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

Wysyła dane do określonego hosta zdalnego.

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

Parametry

buffer
ReadOnlyMemory<Byte>

Bufor danych do wysłania.

remoteEP
EndPoint

Host zdalny, do którego mają być wysyłane dane.

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

remoteEP to null.

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

Element Socket został zamknięty.

Token anulowania został anulowany. Ten wyjątek jest przechowywany w zwracanym zadaniu.

Dotyczy

SendToAsync(ReadOnlyMemory<Byte>, SocketFlags, EndPoint, CancellationToken)

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

Wysyła dane do określonego hosta zdalnego.

public System.Threading.Tasks.ValueTask<int> SendToAsync (ReadOnlyMemory<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, System.Net.EndPoint remoteEP, System.Threading.CancellationToken cancellationToken = default);
member this.SendToAsync : ReadOnlyMemory<byte> * System.Net.Sockets.SocketFlags * System.Net.EndPoint * System.Threading.CancellationToken -> System.Threading.Tasks.ValueTask<int>
Public Function SendToAsync (buffer As ReadOnlyMemory(Of Byte), socketFlags As SocketFlags, remoteEP As EndPoint, 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.

remoteEP
EndPoint

Host zdalny, do którego mają być wysyłane dane.

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

remoteEP to null.

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

Element Socket został zamknięty.

Token anulowania został anulowany. Ten wyjątek jest przechowywany w zwracanym zadaniu.

Dotyczy

SendToAsync(ReadOnlyMemory<Byte>, SocketFlags, SocketAddress, CancellationToken)

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

Wysyła dane do określonego punktu końcowego przy użyciu określonego SocketFlagselementu .

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

Parametry

buffer
ReadOnlyMemory<Byte>

Bufor danych do wysłania.

socketFlags
SocketFlags

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

socketAddress
SocketAddress

Obiekt SocketAddress reprezentujący miejsce docelowe 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

socketAddress to null.

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

Element Socket został zamknięty.

Token anulowania został anulowany. Ten wyjątek jest przechowywany w zwracanym zadaniu.

Dotyczy