Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

BVT1801_ping

.pdf
Скачиваний:
12
Добавлен:
18.05.2021
Размер:
165.34 Кб
Скачать

domain = IP;

 

//printf("Вышли из ReadingParams: 2\n");

//Debug

return 2;

 

}

 

else

 

{

 

domain = IP;

 

//printf("Вышли из ReadingParams: 2\n");

//Debug

return 2;

 

}

 

ip = IP;

 

//printf("Вышли из ReadingParams: 0\n");

//Debug

return 0;

 

}

 

//

 

// ТЕЛО ПРОГРАММЫ

 

//

 

void main(int argc, char* argv[])

 

{

 

//ИНИЦИАЛИЗАЦИЯ ПЕРЕМЕННЫХ

 

currentPackage = 0;

 

countPackage = 2;

 

ip = "";

 

domain = "";

 

pathLog = "log";

 

errorCode = 0;

 

//ТЕЛО ПРОЦЕДУРЫ

 

switch (ReadingParams(argc, argv))

 

{

 

case 0:

// IPv4

switch (InitLog())

 

{

 

case 0:

//

Успешно инициализирован Log файл

switch (InitICMP(&sockAddr))

 

 

{

 

 

case 0:

// Успешно инициализирован socket для ICMP

while (1)

 

 

{

 

 

switch (MakeICMPRequest(&sockAddr))

 

 

{

 

 

case 0:

//

Успешная отправка пакета

switch (MakeICMPReplay())

 

 

{

 

 

case 0:

//

Успешный ответ

switch (Log())

 

 

{

 

 

case 0:

//

Успешная запись в Log файл

break;

 

 

case 1:

//

Запись в Log файл не удалась

DiagLog();

 

 

return;

 

 

}

 

 

break;

 

 

case 1:

//

Ошибка ответа

Diag();

 

 

return;

 

 

}

 

 

break;

 

 

case 1:

//

Ошибка отправки пакета

Diag();

 

 

switch (Log())

 

 

{

 

 

case 0:

//

Успешная запись в Log файл

return;

 

 

case 1:

//

Запись в Log файл не удалась

DiagLog();

 

 

return;

}

case 2:

//

Все пакеты отправлены

switch (Log())

 

 

{

 

 

case 0:

//

Успешная запись в Log файл

return;

 

 

case 1:

//

Запись в Log файл не удалась

DiagLog();

 

 

return;

 

 

}

 

 

}

 

 

}

 

 

break;

 

 

case 1:

// Не удалось инициализировать socket для ICMP

Diag();

 

 

switch (Log())

 

 

{

 

 

case 0:

//

Успешная запись в Log файл

return;

 

 

case 1:

//

Запись в Log файл не удалась

DiagLog();

 

 

return;

 

 

}

 

 

}

 

 

case 1:

//

Ошибка инициализации Log файла

DiagLog();

 

 

return;

 

 

}

 

 

case 1:

//

Ошибка в введенных параметрах

Diag();

 

 

switch (InitLog())

 

 

{

 

 

case 0:

//

Успешно инициализирован Log файл

switch (Log())

 

 

{

 

 

case 0:

//

Успешная запись в Log файл

return;

 

 

case 1:

//

Запись в Log файл не удалась

DiagLog();

 

 

return;

 

 

}

 

 

case 1:

//

Ошибка инициализации Log файла

DiagLog();

 

 

return;

 

 

}

 

 

case 2:

//

Domain

switch (InitLog())

 

 

{

 

 

case 0:

//

Успешно инициализирован Log файл

switch (GetIP())

 

 

{

 

 

case 0:

//

Найден соответствующий IPv4 для заданного домена

switch (InitICMP(&sockAddr))

 

 

{

 

 

case 0:

// Успешно инициализирован socket для ICMP

while (1)

 

 

{

 

 

switch (MakeICMPRequest(&sockAddr))

 

{

 

 

case 0:

//

Успешная отправка пакета

switch (MakeICMPReplay())

 

 

{

 

 

case 0:

//

Успешный ответ

switch (Log())

 

 

{

 

 

case 0:

//

Успешная запись в Log файл

break;

 

 

case 1:

//

Запись в Log файл не удалась

DiagLog();

 

 

return;

 

 

}

 

 

break;

 

 

case 1:

//

Ошибка ответа

Diag();

 

 

return;

 

 

}

 

 

break;

 

 

case 1:

//

Ошибка отправки пакета

Diag();

 

 

switch (Log())

 

 

{

 

 

case 0:

//

Успешная запись в Log файл

return;

 

 

case 1:

//

Запись в Log файл не удалась

DiagLog();

 

 

return;

 

 

}

 

 

case 2:

//

Все пакеты отправлены

switch (Log())

 

 

{

 

 

case 0:

//

Успешная запись в Log файл

return;

 

 

case 1:

//

Запись в Log файл не удалась

DiagLog();

 

 

return;

 

 

}

 

 

}

 

 

}

 

 

break;

 

 

case 1:

// Не удалось инициализировать socket для ICMP

Diag();

 

 

switch (Log())

 

 

{

 

 

case 0:

//

Успешная запись в Log файл

return;

 

 

case 1:

//

Запись в Log файл не удалась

DiagLog();

 

 

return;

}

}

 

 

case 1:

//

Не найден соответствующий IPv4 для заданного домена

Diag();

 

 

switch (Log())

 

 

{

 

 

case 0:

//

Успешная запись в Log файл

return;

 

 

case 1:

//

Запись в Log файл не удалась

DiagLog();

 

 

return;

 

 

}

 

 

}

 

 

case 1:

//

Ошибка инициализации Log файла

DiagLog();

 

 

return;

 

 

}

 

 

}

}