Студопедия — Internet-Domain сокеты
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Internet-Domain сокеты






Cокеты UNIX-domain использоваться только для взаимодействия двух процессов только на одном компьютере. Сокеты Internet, используются для соединения нескольких процессов на различных машинах, подключенных к сети.

 

Для соединения процессов через Интернет сокеты используют пространство имен Интернет указываемое с помощью PF_INET. Большинство протоколов являются TCP/IP. Интернет протокол (IP), протокол нижнего уровня, отправляет пакеты через Интернет, разбивая на меньшие пакеты, в случае необходимости. Он гарантирует только доставку "лучшего усилия", так что пакеты могут быть потеряны или переупорядочены во время транспортировки. Каждый компьютер имеет IP адрес. Протокол управления передачей (TCP), который следует за IP протоколом, обеспечивает надежное подключение. Это позволяет установить между компьютерами соединение, наподобие телефонного и гарантирует доставку данных в правильном порядке.

 

Интернет адрес сокета состоит из двух частей: номера компьютера и номера порта. Эта информация хранится в переменной структуры sockaddr_in. Для идентификации того, что это адрес Интернет пространства имен, необходимо установить поле sin_family в AF_INET. В поле Sin_addr хранится Интернет адрес компьютера, как 32-разрядное целое число IP. Каждому сокету на одном компьютере присваивается номер порта. Поскольку различные машины сохраняют многобайтовые значения в различном порядке байта, используют htons, чтобы преобразовать число порта к сетевому порядку байтов.

 

Команда gethostbyname преобразовывает удобочитаемые имена хоста, числа со стандартной точечной нотацией (типа 10.0.0.1) или DNS имена (такие как www.codesourcery.com) в 32-разрядные IP адреса. В качестве результата возвращается указатель на структуру struct hostent; в поле h_addr хранится IP адрес главного компьютера.

 

Листинг 13.3 иллюстрирует использование Internet-domain сокетов. Программа получает домашнюю страницу от Web сервера, имя хоста которого определено в командной строке.

 

Листинг 13.3 (socket-inet.c)

#include <stdlib.h>

#include <stdio.h>

#include <netinet/in.h>

#include <netdb.h>

#include <sys/socket.h>

#include <unistd.h>

#include <string.h>

/* Печать содержимого домашней страницы.

* В качестве результата передать флаг успешного завершения процесса.*/

void get_home_page (int socket_fd)

{

char buffer[10000];

ssize_t number_characters_read;

/* Передать команду HTTP GET для домашней страницы */

sprintf (buffer, "GET /\n");

write (socket_fd, buffer, strlen (buffer));

/* Читать данные из сокета. Не все данные могут быть возвращены одновременно,

* продолжать попытку до завершения процесса */

while (1) {

number_characters_read = read (socket_fd, buffer, 10000);

if (number_characters_read == 0)

return;

/* Записать данные в стандартный вывод */

fwrite (buffer, sizeof (char), number_characters_read, stdout);

}

}

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

{

int socket_fd;

struct sockaddr_in name;

struct hostent* hostinfo;

/* Создать сокет */

socket_fd = socket (PF_INET, SOCK_STREAM, 0);

/* Сохранить адрес сервера в адрессе сокета */

name.sin_family = AF_INET;

/* Преобразовать строку в число */

hostinfo = gethostbyname (argv[1]);

if (hostinfo == NULL)

return 1;

else

name.sin_addr = *((struct in_addr *) hostinfo->h_addr);

/* Web сервер использует 80 порт */

name.sin_port = htons (80);

/* Установить соединение с Web сервером */

if (connect (socket_fd, &name, sizeof (struct sockaddr_in)) == -1) {

perror ("connect");

return 1;

}

/* Получить домашнюю страницу */

get_home_page (socket_fd);

return 0;

}

 

Имя хоста Web сервера задается в командно строке (без "http: //"). Команда gethostbyname преобразовывает имя хоста в числовой IP адрес и затем подключает поток (TCP) сокета к порту 80 на главном компьютере. Серверы используют Гипертекстовый Транспортный Протокол (HTTP), поэтому передается команда HTTP GET, сервер в качестве ответа передает текст домашней страницы.

 

Для отображения страницы www.codesourcery.com, необходимо задать следующую команду

%./socket-inet www.codesourcery.com

<html>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

...







Дата добавления: 2015-08-27; просмотров: 383. Нарушение авторских прав; Мы поможем в написании вашей работы!



Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...

Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...

Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...

Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...

Примеры решения типовых задач. Пример 1.Степень диссоциации уксусной кислоты в 0,1 М растворе равна 1,32∙10-2   Пример 1.Степень диссоциации уксусной кислоты в 0,1 М растворе равна 1,32∙10-2. Найдите константу диссоциации кислоты и значение рК. Решение. Подставим данные задачи в уравнение закона разбавления К = a2См/(1 –a) =...

Экспертная оценка как метод психологического исследования Экспертная оценка – диагностический метод измерения, с помощью которого качественные особенности психических явлений получают свое числовое выражение в форме количественных оценок...

В теории государства и права выделяют два пути возникновения государства: восточный и западный Восточный путь возникновения государства представляет собой плавный переход, перерастание первобытного общества в государство...

Особенности массовой коммуникации Развитие средств связи и информации привело к возникновению явления массовой коммуникации...

Тема: Изучение приспособленности организмов к среде обитания Цель:выяснить механизм образования приспособлений к среде обитания и их относительный характер, сделать вывод о том, что приспособленность – результат действия естественного отбора...

Тема: Изучение фенотипов местных сортов растений Цель: расширить знания о задачах современной селекции. Оборудование:пакетики семян различных сортов томатов...

Studopedia.info - Студопедия - 2014-2024 год . (0.009 сек.) русская версия | украинская версия