Программирование на C++ глазами хакера


Передача данных по сети с помощью CSocket - часть 2


Я также добавил в класс метод OnAccept, который будет вызываться, когда произойдет подключение к серверу.

В листинге 4.7 вы можете увидеть содержимое файла ServerSocket.cpp. Это реализация класса CServerSocket.

Листинг 4.7. Реализация класса CServerSocket
// ServerSocket.cpp : implementation file // (Исполняемый файл)

#include "stdafx.h" #include "MFCSendText.h" #include "ServerSocket.h"

CServerSocket::CServerSocket(CMFCSendTextDlg* Dlg) { m_Dlg = Dlg; }

CServerSocket::~CServerSocket() { }

// CServerSocket member functions // (Функции-члены объекта CServerSocket) void CServerSocket::OnAccept(int nErrorCode) { // TODO: Add your specialized code here and/or call the base class // (Добавьте сюда ваш код или/и вызовите базовый класс) AfxMessageBox("New connection accepted"); m_Dlg->AddConnection();

CSocket::OnAccept(nErrorCode); }

В конструкторе CServerSocket просто сохраняется значение, полученное через единственный параметр Dlg в переменной m_Dlg.

Метод OnAccept вызывается каждый раз, когда клиент подключается к серверу. Здесь сначала с помощью функции AfxMessageBox выводится на экран сообщение о том, что принято новое соединение. Потом вызывается метод AddConnection класса окна, на который указывает переменная m_Dlg.

В данном случае я уверен, что переменная m_Dlg содержит действительные данные и указывает на существующий класс. Если вы считаете, что переменная может изменить значение, или класс, на который она указывает, может быть уничтожен раньше времени, то желательно ввести проверку на корректность содержимого m_Dlg до вызова его метода AddConnection. Это очень важно, иначе программа будет выполнять недопустимые операции и сможет нарушить работу системы.

Теперь рассмотрим содержимое файла ClientSocket.h, в котором находится описание класса CClientSocket, отвечающего за клиентскую часть (листинг 4.8).

Листинг 4.8. Содержимое файла ClientSocket.h
#pragma once

#include "MFCSendTextDlg.h"

// CClientSocket command target // (Определение класса CClientSocket)




Начало  Назад  Вперед



Книжный магазин