Шаг 12 - Делаем Log файл
Первым делом создадим пункт меню Tools - Options, где будем указывать всякие опции, в том числе и создание лог файла. Переходите на меню в вкладке Resource и используйте IDR_MAINFRAME для редактирования пунктов меню. Удалите меню File и Edit.
Создадим реакцию на его выбор в классе CHTTPServerView
void CHTTPServerView::OnToolsOptions()
{
// TODO: Add your command handler code here
}
Надо создать диалоговое окно и создать для него класс.
Установить кнопочку выбора check box и для неё создать переменную BOOL m_LogFile;. В конструкторе она инициализируется как
CToolsOptios::CToolsOptios(CWnd* pParent /*=NULL*/)
: CDialog(CToolsOptios::IDD, pParent)
{
//{{AFX_DATA_INIT(CToolsOptios)
m_LogFile = FALSE;
//}}AFX_DATA_INIT
}
Заведем стандартную переменную с именем лог файла.
..........
#define PORT_ADDR 80
#define QUEUE_SIZE 25
#define NAMEFILE "FirstStepServer.log"
class CSeverWinSock
.........
И в классе CServerWinSock переменную, которая будет указывать на то, что нужно вести лог файл.
......
class CSeverWinSock
{
public:
BOOL TestLogFile;
void SendData(LPSTR buff);
.........
Начальная инициализация
CSeverWinSock::CSeverWinSock()
{
TestLogFile=FALSE;
}
Организуем вызов диалога, но сначала опишем ссылку на класс.
#include "ToolsOptios.h"
/////////////////////////////////////////////////////////////////////////////
// CHTTPServerView
И вызов диалогового окна.
void CHTTPServerView::OnToolsOptions()
{
CToolsOptios ctopt;
ctopt.m_LogFile=HTTPServer.TestLogFile;
if (ctopt.DoModal()==IDOK) HTTPServer.TestLogFile=ctopt.m_LogFile;
}
Для создания log файла создадим класс CLogFile. Используя этот класс мы и будет писать информацию в файл.
class CLogFile : public CFile
{
public:
BOOL Create();
CString csFileName;
BOOL write(CString writeString);
CLogFile();
virtual ~CLogFile();
};
Подключим его описание к реализации класса CServerWinSock.
// SeverWinSock.h: interface for the CSeverWinSock class.
//
//////////////////////////////////////////////////////////////////////
....................
#include "winsock.h"
# include "LogFile.h"
Обьявим его в классе
....
class CSeverWinSock
{
public:
CLogFile cLogFile;
....
При инициализации в переменную класса CLogFile передаем имя файла
CSeverWinSock::CSeverWinSock()
{
TestLogFile=FALSE;
cLogFile.csFileName=NAMEFILE;
cLogFile.Create();
}
Процедура записи
BOOL CLogFile::write(CString writeString)
{
CFile file(csFileName, CFile::modeNoTruncate | CFile::modeWrite);
file.SeekToEnd();
writeString=writeString+"\r\n";
file.Write(writeString.GetBufferSetLength(writeString.GetLength()),writeString.GetLength());
file.Close();
return TRUE;
}
В проекте есть реализация всех записей в лог на данный момент. Мы постоянно будем расширять количество информации помещаемое в лог файл для изучения соединения и его процесса. Пока там отражаются только самые важные события.
Вот пример пример лог файла
09 : 13 :04
Start WinSock
09 : 13 :04
uuobat
09 : 13 :04
Create Soket
09 : 13 :04
bind
09 : 13 :04
WSAAsyncSelect
09 : 13 :04
Listen
09 : 13 :05
StopServer
09 : 13 :05
Close Socket
Загрузить проект | Предыдущий шаг | Следующий Шаг | Оглавление
By Artem.
Используются технологии uCoz
|