Windows Sockets: powiadomienia dotyczące gniazdWindows Sockets: Socket Notifications

W tym artykule opisano funkcje powiadomień w klasach gniazd.This article describes the notification functions in the socket classes. Te funkcje członkowskie są funkcjami wywołania zwrotnego, które są wywoływane przez platformę w celu powiadomienia obiektu gniazda ważnych zdarzeń.These member functions are callback functions that the framework calls to notify your socket object of important events. Funkcje powiadomień są następujące:The notification functions are:

  • OnReceive: powiadamia to gniazdo, że w buforze znajdują się dane do pobrania przez wywołanie metody Receive.OnReceive: Notifies this socket that there is data in the buffer for it to retrieve by calling Receive.

  • OnSend: powiadamia to gniazdo, że może teraz wysyłać dane przez wywołanie metody send.OnSend: Notifies this socket that it can now send data by calling Send.

  • OnAccept: powiadamia gniazdo nasłuchiwania, które może akceptować oczekujące żądania połączenia przez wywołanie metody Accept.OnAccept: Notifies this listening socket that it can accept pending connection requests by calling Accept.

  • OnConnect: powiadamia to gniazdo łączące, że próba połączenia została zakończona: być może pomyślnie lub prawdopodobnie wystąpił błąd.OnConnect: Notifies this connecting socket that its connection attempt completed: perhaps successfully or perhaps in error.

  • OnClose: powiadamia to gniazdo o zamknięciu gniazda, z którym jest ono połączone.OnClose: Notifies this socket that the socket it is connected to has closed.

    Uwaga

    Dodatkowa funkcja powiadomień to OnOutOfBandData.An additional notification function is OnOutOfBandData. To powiadomienie informuje gniazdo odbiorcze, że wysyła gniazdo wysyłające dane poza pasmem.This notification tells the receiving socket that the sending socket has "out-of-band" data to send. Dane poza pasmem są logicznie niezależnym kanałem skojarzonym z każdą parą podłączonych gniazd strumienia.Out-of-band data is a logically independent channel associated with each pair of connected stream sockets. Kanał poza pasmem jest zazwyczaj używany do wysyłania "pilnych" danych.The out-of-band channel is typically used to send "urgent" data. MFC obsługuje dane poza pasmem.MFC supports out-of-band data. Zaawansowani użytkownicy pracujący z klasą CAsyncSocket mogą potrzebować korzystania ze kanału poza pasmem, ale nie są zalecane dla użytkowników klasy CSocket .Advanced users working with class CAsyncSocket might need to use the out-of-band channel, but users of class CSocket are discouraged from using it. Łatwiejszym sposobem, aby utworzyć drugie gniazdo do przekazywania takich danych.The easier way is to create a second socket for passing such data. Aby uzyskać więcej informacji na temat danych poza pasmem, zobacz specyfikację Windows Sockets dostępną w Windows SDK.For more information about out-of-band data, see the Windows Sockets specification, available in the Windows SDK.

W przypadku wyprowadzania z klasy należy CAsyncSocket zastąpić funkcje powiadomień dla tych zdarzeń sieci, które są istotne dla aplikacji.If you derive from class CAsyncSocket, you must override the notification functions for those network events of interest to your application. Jeśli klasa jest pochodną klasy CSocket , należy wybrać, czy chcesz zastąpić interesujące funkcje powiadomień.If you derive a class from class CSocket, it is your choice whether to override the notification functions of interest. Można również użyć CSocket samego, w którym przypadku funkcja powiadomień domyślnie nie wykonuje żadnych operacji.You can also use CSocket itself, in which case the notification functions default to doing nothing.

Te funkcje są wykorzystanymi funkcjami wywołania zwrotnego.These functions are overridable callback functions. CAsyncSocket i CSocket Konwertuj komunikaty na powiadomienia, ale musisz zaimplementować sposób reagowania funkcji powiadomień, jeśli chcesz ich używać.CAsyncSocket and CSocket convert messages to notifications, but you must implement how the notification functions respond if you wish to use them. Funkcje powiadamiania są wywoływane w chwili, gdy gniazdo zostanie powiadomione o zdarzeniu, na przykład o obecności danych do odczytu.The notification functions are called at the time your socket is notified of an event of interest, such as the presence of data to be read.

MFC wywołuje funkcje powiadomień, aby umożliwić dostosowanie zachowania gniazda w momencie powiadomienia.MFC calls the notification functions to let you customize your socket's behavior at the time it is notified. Można na przykład wywoływać Receive z OnReceive funkcji powiadamiania, czyli powiadomienia o danych do odczytu, aby Receive je odczytać.For example, you might call Receive from your OnReceive notification function, that is, on being notified that there is data to read, you call Receive to read it. Takie podejście nie jest konieczne, ale jest prawidłowym scenariuszem.This approach is not necessary, but it is a valid scenario. Alternatywnie możesz użyć funkcji powiadomień do śledzenia postępu, drukowania komunikatów śledzenia i tak dalej.As an alternative, you might use your notification function to track progress, print TRACE messages, and so on.

Aby skorzystać z tych powiadomień, można zastępowanie funkcji powiadomień w pochodnej klasie gniazd i zapewnić implementację.You can take advantage of these notifications by overriding the notification functions in a derived socket class and providing an implementation.

Podczas operacji, takiej jak otrzymywanie lub wysyłanie danych, CSocket obiekt zostaje synchronicznie.During an operation such as receiving or sending data, a CSocket object becomes synchronous. Podczas synchronicznego stanu wszystkie powiadomienia przeznaczone dla innych gniazd są umieszczane w kolejce, gdy bieżące gniazdo oczekuje na powiadomienie.During the synchronous state, any notifications meant for other sockets are queued while the current socket waits for the notification it wants. (Na przykład w trakcie Receive wywołania gniazdo chce, aby powiadomienie zostało odczytane). Gdy gniazdo ukończy operację synchroniczną i przestanie być asynchroniczne, inne gniazda mogą zacząć odbierać powiadomienia znajdujące się w kolejce.(For example, during a Receive call, the socket wants a notification to read.) Once the socket completes its synchronous operation and becomes asynchronous again, other sockets can begin receiving the queued notifications.

Uwaga

W programie CSocket OnConnect Funkcja powiadomień nigdy nie jest wywoływana.In CSocket, the OnConnect notification function is never called. W przypadku połączeń nastąpi wywołanie Connect , które zwróci, gdy połączenie zostanie zakończone (pomyślne lub w przypadku błędu).For connections, you call Connect, which will return when the connection is completed (either successfully or in error). Sposób obsługi powiadomień o połączeniach to szczegóły implementacji MFC.How connection notifications are handled is an MFC implementation detail.

Aby uzyskać szczegółowe informacje na temat każdej funkcji powiadomień, zobacz Funkcja w klasie CAsyncSocket w dokumentacji MFC.For details about each notification function, see the function under class CAsyncSocket in the MFC Reference. Aby uzyskać kod źródłowy i informacje o przykładach MFC, zobacz MFC Samples.For source code and information about MFC samples, see MFC Samples.

Aby uzyskać więcej informacji, zobacz:For more information, see:

Zobacz teżSee also

Windows Sockets w MFCWindows Sockets in MFC