Socket.SendToAsync Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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
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.