BVT1801_ping
.pdfdomain = 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; |
|
|
} |
|
|
}
}