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

Шаг 13 - Расширяем информативность LOG

Получить информацию о Winsock.dll, который используется на Вашем ПК можно анализируя стртуктуру WSADATA.
typedef struct WSAData {   
	WORD                    wVersion;
        WORD                    wHighVersion;
        char                    szDescription[WSADESCRIPTION_LEN+1];
        char                    szSystemStatus[WSASYS_STATUS_LEN+1];
        unsigned short          iMaxSockets;
        unsigned short          iMaxUdpDg;
        char FAR *              lpVendorInfo;
} WSADATA, FAR * LPWSADATA; 
wVersion - версия поддержка которой ожидается. Ведь можно поддерживать и младшую версию. wHighVersion - максимальная версия, с которой можно работать. Нормально когда они совпадают хотя и не обязаны. szDescription - текстовая строка с описанием. szSystemStatus - опять текстовая строка с описанием, но в приложении для типа операционной среды. С остальными сложнее, приложение должно проигнорировать iMaxsockets, iMaxUdpDg, и lpVendorInfo области в WSAData, если величина в wVersion после успешного вызова на WSAStartup в версии 2.

Я внес в код инициализации WinSock изменения

BOOL CSeverWinSock::StartWinSock()
{
	if (WSAStartup(WINSOCK_VERSION, &wsaData)) 
	{
		AfxMessageBox("winsock not bi initialized !");
		LogsWrite("winsock not bi initialized !");
		WSACleanup();
		return FALSE;
	} 
	LogsWrite("Запуск WinSock");
	LogsWriteNotTime("Информация о WinSock.DLL"); 
	LogsWriteNotTime(wsaData.szDescription); 
	LogsWriteNotTime(wsaData.szSystemStatus);
	return TRUE;
}
Появилась функция LogsWriteNotTime, которая пишет в log файл без указания времени. Вот она
void CSeverWinSock::LogsWriteNotTime(CString writeString)
{
if (TestLogFile)  	 cLogFile.write(writeString); 
}
Вносим пояснения в при получении имени хоста.
BOOL CSeverWinSock::SocketGetHostName()
{
	........
	LogsWriteNotTime("Получаем имя хоста");
	LogsWrite(chInfo);
	........
}
Дополнительная информация о создании сокета.
BOOL CSeverWinSock::CreateSocket()
{
	.............
	LogsWrite("Создали сокет");
	CString  temp;
	temp.Format(" %i", PORT_ADDR);
	LogsWriteNotTime("Порт " + temp);
	LogsWriteNotTime("Протокол по умолчанию ");
	..........
}
так же я добавил фиксацию времени обращения клиента.
afx_msg LRESULT CHTTPServerView::OnServerAccept(WPARAM wParam, LPARAM lParam)
{
	.........
	HTTPServer.LogsWrite("Запрос соединение клиентом"); 
	..........
	  closesocket(HTTPServer.clientsocket);
	  HTTPServer.LogsWrite("Отсоединение клиента"); 
	...........
}
Конечно расширять информативность лога надо и дальше, но пока хватит :-) Вот как он уже выглядит !!!!
09 : 45 :03
Запуск WinSock
Информация о WinSock.DLL
Microsoft wsock32.dll, ver2.2, 32bit of Apr 28 1998, at 19:33:24.
On Win95.
Получаем имя хоста
09 : 45 :03
Jana
09 : 45 :03
Создали сокет
Порт  80
Протокол по умолчанию 
09 : 45 :03
bind
09 : 45 :03
WSAAsyncSelect 
..........


Загрузить проект | Предыдущий шаг | Следующий Шаг | Оглавление

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

Rambler's Top100 Rambler's Top100

©  Adept Design Studio

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