Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отчет чернецова 2015.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
5 Мб
Скачать
☆

Лабораторная работа № 3 Получение сетевой информации с помощью протокола tcp/ip

Цель работы: изучение работы протокола TCP/IP

Задание на выполнение работы: написать следующие программы:

  1. Получение имени сервера по заданному IP-адресу

  2. Получение IP –адреса по заданному имени сервера

Задание №1

Листинг программы

#define WIN

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <conio.h>

#ifdef WIN

#include <windows.h>

#endif

//#define PORT_NUM 1050

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

{

#ifdef WIN

WORD wVersionRequested = MAKEWORD(1,1);

WSADATA wsaData;

#endif

struct hostent *host;

struct in_addr *myaddr;

char ip_address[256];

if(argc!=2)

{

printf("usage is 'getname ip_address' \n");

getch();

exit(1);

}

#ifdef WIN

WSAStartup(wVersionRequested, &wsaData);

#endif

strcpy (ip_address, argv[1]);

myaddr=(struct in_addr*)malloc(sizeof(struct in_addr));

myaddr->s_addr=inet_addr(ip_address);

printf("looking for host name ..'%s'", ip_address);

host = gethostbyaddr((char *) myaddr, 4 ,AF_INET);

if (host==NULL)

printf("Host name for '%s' could not be found \n",ip_address);

else

printf("Host name for '%s' is '%s' \n", ip_address, host->h_name);

#ifdef WIN

WSACleanup();

#endif

getch();

}

Рис.3.1 Нахождение имени хоста по ip адресу

2 Задание:

Листинг:

#define WIN

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <conio.h>

#ifdef WIN

#include <windows.h>

#endif

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

{

#ifdef WIN

WORD wVersionRequested = MAKEWORD(1,1);

WSADATA wsaData;

#endif

struct hostent *host;

struct in_addr address;

char host_name[256];

char ip_address[256] ;

if(argc!=2)

{

printf("error!! \n");

getch();

exit(1);

}

#ifdef WIN

WSAStartup(wVersionRequested, &wsaData);

#endif

strcpy (host_name, argv[1]);

host = gethostbyname(host_name);

if (host==NULL)

printf("Host name for '%s' could not be found \n",ip_address);

else

{

memcpy(&address, host->h_addr, 4);

printf(" IP address for '%s' is %s \n", host_name, inet_ntoa(address));

}

#ifdef WIN

WSACleanup();

#endif

getch();

}

Рис.3.2 Нахождение ip адреса.

Контрольные вопросы:

  1. Опишите порядок получения имени хоста по заданному IP адресу

Это делается при помощи команды gethostbyaddr() которая служит для получения указателя на структуру host.

Затем выполняется запрос по поиску имени хоста по IP.

  1. Опишите порядок получения IP адреса по заданному имени хоста

Это делается при помощи команды gethostbyname() которая служит для получения указателя на структуру ip_address.

Затем выполняеться запрос по поиску IP по имени хоста.

В данном случае это – 317a-2.fit.rshu.ru