Windows Sockets: wyprowadzanie z klas gniazdWindows Sockets: Deriving from Socket Classes

W tym artykule opisano niektóre funkcje, które można uzyskać przez wyjęcie własnej klasy z jednej z klas gniazd.This article describes some of the functionality you can gain by deriving your own class from one of the socket classes.

Aby dodać własne funkcje, można utworzyć własne klasy gniazd z CAsyncSocket lub CSocket .You can derive your own socket classes from either CAsyncSocket or CSocket to add your own functionality. W szczególności te klasy dostarczają wiele funkcji wirtualnych elementów członkowskich, które można przesłonić.In particular, these classes supply a number of virtual member functions that you can override. Te funkcje obejmują OnReceive, OnSend, OnAccept, OnConnecti OnClose.These functions include OnReceive, OnSend, OnAccept, OnConnect, and OnClose. Można przesłonić funkcje w pochodnej klasie gniazda, aby korzystać z powiadomień, które zapewniają, gdy wystąpią zdarzenia sieciowe.You can override the functions in your derived socket class to take advantage of the notifications they provide when network events occur. Struktura wywołuje te funkcje wywołania zwrotnego powiadomień, aby powiadomić Cię o ważnych zdarzeniach gniazda, takich jak otrzymanie danych, które można rozpocząć odczytywanie.The framework calls these notification callback functions to notify you of important socket events, such as the receipt of data that you can begin reading. Aby uzyskać więcej informacji na temat funkcji powiadomień, zobacz Windows Sockets: powiadomienia dotyczące gniazd.For more information about notification functions, see Windows Sockets: Socket Notifications.

Ponadto Klasa CSocket dostarcza funkcję członkowską OnMessagePending (zaawansowaną).Additionally, class CSocket supplies the OnMessagePending member function (an advanced overridable). MFC wywołuje tę funkcję, gdy gniazdo pompuje komunikaty systemu Windows.MFC calls this function while the socket is pumping Windows-based messages. Możesz przesłonić wyszukiwanie OnMessagePending konkretnych komunikatów z systemu Windows i odpowiadać na nie.You can override OnMessagePending to look for particular messages from Windows and respond to them.

Domyślna wersja OnMessagePending dostarczonych w klasie CSocket bada kolejkę komunikatów dla WM_PAINT komunikatów podczas oczekiwania na ukończenie wywołania blokującego.The default version of OnMessagePending supplied in class CSocket examines the message queue for WM_PAINT messages while waiting for a blocking call to complete. Wysyła wiadomości Paint w celu poprawy jakości wyświetlania.It dispatches paint messages to improve display quality. Nie robimy coś przydatnego, to ilustruje jeden ze sposobów, aby można było samodzielnie zastąpić funkcję.Aside from doing something useful, this illustrates one way you might override the function yourself. W innym przykładzie należy rozważyć użycie OnMessagePending dla poniższego zadania.As another example, consider using OnMessagePending for the following task. Załóżmy, że podczas oczekiwania na zakończenie transakcji sieciowej zostanie wyświetlone niemodalne okno dialogowe.Suppose you display a modeless dialog box while waiting for a network transaction to complete. Okno dialogowe zawiera przycisk Anuluj, którego użytkownik może użyć do anulowania blokowania transakcji, które trwają zbyt długo.The dialog box contains a Cancel button that the user can use to cancel blocking transactions that take too long. OnMessagePendingPrzesłonięcie może obsłużyć komunikaty dotyczące tego niemodalnego okna dialogowego.Your OnMessagePending override might pump messages related to this modeless dialog box.

W OnMessagePending przesłonięciu Zwróć wartość true lub Return z wywołania do wersji klasy bazowej OnMessagePending .In your OnMessagePending override, return either TRUE or the return from a call to the base-class version of OnMessagePending. Wywołaj wersję klasy bazowej, jeśli wykonuje ona zadania, które nadal chcesz wykonać.Call the base-class version if it performs work that you still want done.

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

Zobacz teżSee also

Windows Sockets w MFCWindows Sockets in MFC