// ===================================================
// Листинг 9. Вызов диагностики и определение
//           конфигурации текущей сети
//
// Файл ipxdiagn.cpp
//
// (C) A. Frolov, 1993
// ===================================================

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <mem.h>
#include <string.h>
#include "ipx.hpp"

// Вход в программу.
// Создаем объект - программу-клиент.
// Затем запускаем ее.

void main(void) {
	IPX_CLIENT NetView;
	NetView.Go();
}

// Функция определяет и распечатывает
// конфигурацию текущей сети.

void IPX_CLIENT::Go(void) {

// Создаем 20 ECB для приема ответов от
// станций

	ECB *RxECB[20];

// Создаем ECB для передачи диагностического
// запроса.

	ECB TxECB(this->Socket, 0x456);

// Ставим заказанные ECB в очередь на
// прием пакетов.

	for(int i=0; i<20; i++) {
		RxECB[i] = new ECB(this->Socket);
		RxECB[i]->ListenForPacket();
	}

// Посылаем диагностический пакет
// всем станциям текущей сети.

	TxECB.SendPacket();

	printf("*NetView* v1.0, (C) Фролов А.В., 1993\n"
			 "Подождите немного...\n\n");

// Ждем примерно одну секунду

	sleep(1);

// Распечатываем конфигурацию сети

	printf("Конфигурация сети:\n\n");
	printf("Версия\tСокет\tКомпоненты\tСеть\t\tУзел\n");
	printf("------\t-----\t----------\t----\t\t----\n");

	for(i=0; i<20; i++) {
		RxECB[i]->PrintDiagnostics();
	}

}