Студопедия — 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; просмотров: 393. Нарушение авторских прав; Мы поможем в написании вашей работы!



Шрифт зодчего Шрифт зодчего состоит из прописных (заглавных), строчных букв и цифр...

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

Практические расчеты на срез и смятие При изучении темы обратите внимание на основные расчетные предпосылки и условности расчета...

Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...

Патристика и схоластика как этап в средневековой философии Основной задачей теологии является толкование Священного писания, доказательство существования Бога и формулировка догматов Церкви...

Основные симптомы при заболеваниях органов кровообращения При болезнях органов кровообращения больные могут предъявлять различные жалобы: боли в области сердца и за грудиной, одышка, сердцебиение, перебои в сердце, удушье, отеки, цианоз головная боль, увеличение печени, слабость...

Вопрос 1. Коллективные средства защиты: вентиляция, освещение, защита от шума и вибрации Коллективные средства защиты: вентиляция, освещение, защита от шума и вибрации К коллективным средствам защиты относятся: вентиляция, отопление, освещение, защита от шума и вибрации...

Стресс-лимитирующие факторы Поскольку в каждом реализующем факторе общего адаптацион­ного синдрома при бесконтрольном его развитии заложена потенци­альная опасность появления патогенных преобразований...

ТЕОРИЯ ЗАЩИТНЫХ МЕХАНИЗМОВ ЛИЧНОСТИ В современной психологической литературе встречаются различные термины, касающиеся феноменов защиты...

Этические проблемы проведения экспериментов на человеке и животных В настоящее время четко определены новые подходы и требования к биомедицинским исследованиям...

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