Udostępnij za pośrednictwem


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 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

Nie RemoteEndPoint może mieć wartości null.

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

Została zamknięta Socket .

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 zapewnia możliwość wysyłania danych w osobnym wątku wykonywania. Mimo że ta metoda jest przeznaczona do protokołów bez połączenia, SendToAsync działa zarówno z protokołami bez połączenia, jak i zorientowanymi na połączenia.

Aby otrzymywać powiadomienia 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 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 SendToAsync 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.

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

Jeśli używasz protokołu bez połączenia, nie musisz ustanawiać domyślnego hosta zdalnego za BeginConnectpomocą metody , 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 sieci lokalnej i numer portu. Użyj numeru portu zero, jeśli chcesz, aby podstawowy dostawca usług wybrał bezpłatny port. Jeśli musisz zidentyfikować przypisany adres IP sieci lokalnej i numer portu, możesz użyć LocalEndPoint właściwości po SocketAsyncEventArgs.Completed zasygnalizowanej zdarzeniu, a skojarzone delegaty są wywoływane.

Jeśli chcesz wysłać dane do adresu emisji, musisz najpierw wywołać SetSocketOption metodę i ustawić opcję gniazda na SocketOptionName.Broadcast wartość 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ę DontRoute we SocketAsyncEventArgs.SocketFlags 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 jest wysyłany i SendToAsync zgłasza 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.

Została zamknięta Socket .

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.

Została zamknięta Socket .

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.

Została zamknięta Socket .

Token anulowania został anulowany. Ten wyjątek jest przechowywany w zwróconym 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.

Została zamknięta Socket .

Token anulowania został anulowany. Ten wyjątek jest przechowywany w zwróconym 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 , który reprezentuje 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.

Została zamknięta Socket .

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

Dotyczy