Socket.BeginReceiveMessageFrom 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.
Zaczyna asynchronicznie odbierać określoną liczbę bajtów danych do określonej lokalizacji buforu danych przy użyciu określonej wartości SocketFlagsi przechowuje informacje o punkcie końcowym i pakiecie.
public:
IAsyncResult ^ BeginReceiveMessageFrom(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 BeginReceiveMessageFrom (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, ref System.Net.EndPoint remoteEP, AsyncCallback? callback, object? state);
public IAsyncResult BeginReceiveMessageFrom (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, ref System.Net.EndPoint remoteEP, AsyncCallback callback, object state);
member this.BeginReceiveMessageFrom : byte[] * int * int * System.Net.Sockets.SocketFlags * EndPoint * AsyncCallback * obj -> IAsyncResult
Public Function BeginReceiveMessageFrom (buffer As Byte(), offset As Integer, size As Integer, socketFlags As SocketFlags, ByRef remoteEP As EndPoint, callback As AsyncCallback, state As Object) As IAsyncResult
Parametry
- offset
- Int32
Położenie na podstawie zera w parametrze buffer
, w którym mają być przechowywane dane.
- size
- Int32
Liczba bajtów do odebrania.
- socketFlags
- SocketFlags
Bitowa kombinacja SocketFlags wartości.
- remoteEP
- EndPoint
Odwołanie do EndPoint tego samego typu co punkt końcowy hosta zdalnego, który ma zostać zaktualizowany w przypadku odbierania synchronicznego.
- callback
- AsyncCallback
Delegat AsyncCallback .
- state
- Object
Obiekt zawierający informacje o stanie dla tego żądania.
Zwraca
Element IAsyncResult odwołujący się do odczytu asynchronicznego.
Wyjątki
.NET Framework i .NET 5 i starsze 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ść obiektu buffer
.
-lub-
size
wartość jest mniejsza niż 0.
-lub-
size
jest większa niż długość buffer
minus wartości parametru offset
.
Została zamknięta Socket .
Uwagi
Ważne
Jest to interfejs API zgodności. Nie zalecamy używania metod APM (Begin*
i End*
) do nowego programowania. Zamiast tego należy użyć Task
odpowiedników opartych na protokole .
Możesz przekazać wywołanie zwrotne implementujące AsyncCallback polecenie , BeginReceiveMessageFrom aby 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 BeginReceiveMessageFrom. W takim przypadku CompletedSynchronously właściwość zwrócona IAsyncResult zostanie ustawiona na wartość , aby wskazać true
, że metoda została ukończona synchronicznie.
AsyncState Użyj właściwości obiektu , IAsyncResult aby uzyskać obiekt stanu przekazany do BeginReceiveMessageFrom metody.
Operacja asynchroniczna BeginReceiveMessageFrom musi zostać ukończona przez wywołanie EndReceiveMessageFrom metody . Zazwyczaj metoda jest wywoływana przez delegata AsyncCallback . EndReceiveMessageFrom zablokuje wątek wywołujący do momentu ukończenia operacji.
Aby anulować oczekujący BeginReceiveMessageFromelement , wywołaj metodę Close .
Ta metoda odczytuje dane do parametru buffer
i przechwytuje zdalny punkt końcowy hosta, z którego są wysyłane dane, a także informacje o odebranym pakiecie. Aby uzyskać informacje na temat pobierania tego punktu końcowego, zobacz EndReceiveMessageFrom. Ta metoda jest najbardziej przydatna, jeśli zamierzasz asynchronicznie odbierać bez połączenia datagramy z nieznanego hosta lub wielu hostów.
Uwaga
Jeśli zostanie wyświetlony element SocketException, użyj SocketException.ErrorCode właściwości , aby uzyskać określony kod 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 Socket wystąpienia i określonego wywołania zwrotnego), kolejne zastosowania tego kontekstu zobaczą poprawę wydajności.