Socket.BeginSendTo Metoda

Definicja

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

buffer
Byte[]

Tablica typu Byte zawierająca dane do wysłania.

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.

remoteEP
EndPoint

Element EndPoint reprezentujący urządzenie zdalne.

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

buffer to null.

-lub-

remoteEP to null.

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

offsetjest 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 Taskparametrach .

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.

Dotyczy

Zobacz też