Socket.BeginSendTo 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.
Wysyła dane asynchronicznie do określonego hosta zdalnego.
public:
IAsyncResult ^ BeginSendTo(cli::array <System::Byte> ^ buffer, int offset, int size, System::Net::Sockets::SocketFlags socketFlags, System::Net::EndPoint ^ remoteEP, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginSendTo (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, System.Net.EndPoint remoteEP, AsyncCallback? callback, object? state);
public IAsyncResult BeginSendTo (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, System.Net.EndPoint remoteEP, AsyncCallback callback, object state);
member this.BeginSendTo : byte[] * int * int * System.Net.Sockets.SocketFlags * System.Net.EndPoint * AsyncCallback * obj -> IAsyncResult
Public Function BeginSendTo (buffer As Byte(), offset As Integer, size As Integer, socketFlags As SocketFlags, remoteEP As EndPoint, callback As AsyncCallback, state As Object) As IAsyncResult
Parametry
- offset
- Int32
Pozycja oparta na zerze, w buffer
której należy rozpocząć wysyłanie danych.
- size
- Int32
Liczba bajtów do wysłania.
- socketFlags
- SocketFlags
Bitowa kombinacja SocketFlags wartości.
- callback
- AsyncCallback
Delegat AsyncCallback .
- state
- Object
Obiekt zawierający informacje o stanie dla tego żądania.
Zwraca
Element IAsyncResult odwołujący się do wysyłania asynchronicznego.
Wyjątki
.NET Framework i .NET 5 i starszych tylko: wystąpił błąd podczas próby uzyskania dostępu do gniazda.
offset
wartość jest mniejsza niż 0.
-lub-
offset
jest większa niż długość .buffer
-lub-
size
wartość jest mniejsza niż 0.
-lub-
size
jest większa niż długość buffer
odmętą wartości parametru offset
.
Element Socket został zamknięty.
Obiekt wywołujący wyżej w stosie wywołań nie ma uprawnień do żądanej operacji.
Uwagi
Ważne
Jest to interfejs API zgodności. Nie zalecamy używania metod APM (Begin*
i End*
) do tworzenia nowych rozwiązań. Zamiast tego należy użyć odpowiedników opartych na Task
parametrach .
Możesz przekazać wywołanie zwrotne implementujące AsyncCallback element , aby BeginSendTo otrzymywać powiadomienia o zakończeniu operacji. Należy pamiętać, że jeśli bazowy stos sieciowy ukończy operację synchronicznie, wywołanie zwrotne zostanie wykonane w tekście podczas wywołania metody BeginSendTo. W takim przypadku właściwość zwrócona IAsyncResult zostanie ustawiona na wartość , aby wskazaćtrue
, CompletedSynchronously że metoda została ukończona synchronicznie.
AsyncState Użyj właściwości , IAsyncResult aby uzyskać obiekt stanu przekazany do BeginSendTo metody .
Operacja musi zostać ukończona BeginSendTo przez wywołanie EndSendTo metody . Zazwyczaj metoda jest wywoływana przez dostarczonego AsyncCallback delegata. EndSendTo Zablokuje wątek wywołujący do momentu ukończenia operacji.
Jeśli używasz protokołu zorientowanego na połączenie, musisz najpierw wywołać metodę Connect, BeginConnect, Acceptlub BeginAccept , lub BeginSendTo zgłosi wartość SocketException.
BeginSendTo Polecenie zignoruje remoteEP
parametr i wyśle dane do EndPoint metody ustanowionej w metodzie Connect, BeginConnect, Acceptlub BeginAccept .
Jeśli używasz protokołu bez połączenia, nie musisz ustanawiać domyślnego hosta zdalnego przy Connect użyciu metody lub BeginConnect przed wywołaniem metody SendTo. Należy to zrobić tylko wtedy, gdy zamierzasz wywołać metodę BeginSend . Jeśli wywołasz metodę Connect lub BeginConnect przed wywołaniem SendTometody , remoteEP
parametr 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 lokalny adres sieciowy 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 sieci lokalnej i numer portu, możesz użyć LocalEndPoint właściwości po pomyślnym zakończeniu EndSendTo metody.
Jeśli chcesz wysłać dane do adresu emisji, musisz najpierw wywołać metodę SetSocketOption i ustawić opcję gniazda na SocketOptionName.Broadcast. -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 EndSendTo zgłosi błąd SocketException.
Jeśli określisz flagę DontRoute jako socketflags
parametr, wysyłane dane nie będą kierowane.
Uwaga
Jeśli zostanie wyświetlony element SocketException, użyj SocketException.ErrorCode właściwości , aby uzyskać określony kod błędu. Po uzyskaniu tego kodu zapoznaj się z dokumentacją kodu błędu interfejsu API Windows Sockets w wersji 2 , aby uzyskać szczegółowy opis błędu.
Uwaga
Ten element członkowski generuje informacje ze śledzenia pod warunkiem włączenia funkcji śledzenia sieci w aplikacji. Aby uzyskać więcej informacji, zobacz Śledzenie sieci w .NET Framework.
Uwaga
Kontekst wykonywania (kontekst zabezpieczeń, personifikowany użytkownik i kontekst wywołujący) jest buforowany dla metod asynchronicznych Socket . Po pierwszym użyciu określonego kontekstu (konkretnej metody asynchronicznej Socket , określonego wystąpienia i określonego Socket wywołania zwrotnego), kolejne zastosowania tego kontekstu zobaczą poprawę wydajności.