| Форум| Гостевая| Ссылки| Программы| Исходные тексты| Наши партнеры.|
   
| Главная| Рассылки| Услуги| Библиотека| Новости| Авторам| Программистам| Студентам|
delphi c++ assembler
 

Шаг 12 - Делаем Log файл

Первым делом создадим пункт меню Tools - Options, где будем указывать всякие опции, в том числе и создание лог файла. Переходите на меню в вкладке Resource и используйте IDR_MAINFRAME для редактирования пунктов меню. Удалите меню File и Edit.

step12_1.gif (919 b)

Создадим реакцию на его выбор в классе CHTTPServerView

void CHTTPServerView::OnToolsOptions() 
{
	// TODO: Add your command handler code here
	
}
Надо создать диалоговое окно и создать для него класс.

step12_2.gif (4404 b)

Установить кнопочку выбора 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
 

Rambler's Top100 Rambler's Top100

©  Adept Design Studio

Используются технологии uCoz