Сидни Фейт - TCP/IP Архитектура, протоколы, реализация (включая IP версии 6 и IP Security)

Здесь есть возможность читать онлайн «Сидни Фейт - TCP/IP Архитектура, протоколы, реализация (включая IP версии 6 и IP Security)» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Город: Москва, Год выпуска: 2000, ISBN: 2000, Издательство: Лори, Жанр: ОС и Сети, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

TCP/IP Архитектура, протоколы, реализация (включая IP версии 6 и IP Security): краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «TCP/IP Архитектура, протоколы, реализация (включая IP версии 6 и IP Security)»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

 Второе издание популярного справочника полностью переработано и расширено с целью предоставить читателю наиболее полное описание средств разработки, конфигурирования, использования и обслуживания сетей TCP/IP и соответствующих служб.
Книга написана увлекательно и доступно. Она содержит дополнительные материалы о нескольких протоколах Интернета, используемых серверами и браузерами WWW, а также рассматривает все последние изменения в этой области. В книгу включены главы о новом стандарте безопасности IP и протоколе IP следующего поколения, известном как IPng или IPv6. Рисунки и таблицы наглядно показывают влияние средств безопасности IP и IPng на существующие сетевые среды.
Издание содержит следующие дополнительные разделы:
• Безопасность IP и IPv6
• Описание средств WWW, новостей Интернета и приложений для работы с gopher
• Подробное описание серверов имен доменов (DNS), маски подсети и бесклассовой маршрутизации в Интернете
• Таблицы и протоколы маршрутизации
• Руководство по реализации средств безопасности для каждого из протоколов и приложений
• Примеры диалогов с новыми графическими инструментами
Новое издание бестселлера по TCP/IP станет незаменимым помощником для разработчиков сетей и приложений, для сетевых администраторов и конечных пользователей.

TCP/IP Архитектура, протоколы, реализация (включая IP версии 6 и IP Security) — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «TCP/IP Архитектура, протоколы, реализация (включая IP версии 6 и IP Security)», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

if (bind(sockMain, &servAddr, sizeof(servAddr)) ) {

perror("Вызов bind от сервера неудачен.");

exit(1);

}

/* 4. Чтобы узнать номер порта, следует использовать функцию

* getsockname() для копирования порта в servAddr. */

length = sizeof(servAddr);

if (getsockname(sockMain, &servAddr, &length)) {

perror("Вызов getsockname неудачен.");

exit(1);

}

printf ("SERVER: Номер порта %d\n", ntohs(servAddr.sin_port));

/* 5. Установить очередь на пять клиентов.*/

listen(sockMain, 5);

/* 6. Ожидать поступления клиентов. Вызов accept возвратит

* дескриптор нового socket, который следует использовать клиенту. */

for(;;) {

if ((sockClient = accept(sockMain, 0, 0)) < 0) {

perror("Неверный socket клиента.");

exit(1);

}

/* 7. Обслужить клиента и закрыть соединение с ним. */

doTask(sockClient);

close(sockClient);

}

}

/* Читать один поступивший буфер, распечатать некоторую информацию

* и завершить работу. */

#define BUFLEN 81

int doTask(sockClient)

int sockClient;

{

char buf[BUFLEN];

int msgLength;

/* 8. Опустошение буфера и вызов recv

* для получения сообщения от клиента. */

bzero(buf, BUFLEN);

if ((msgLength = recv(sockClient,buf, 80, 0)) < 0) {

perror("Неверное получение." );

exit(1);

}

printf("SERVER: Socket для клиента %d\n", sockClient);

printf("SERVER: Длина сообщения %d\n", msgLength);

printf("SERVER: Сообщение: %s\n\n", buf);

}

21.9 Интерфейс программирования socket для UDP

Мы познакомились с наиболее общим интерфейсом программирования TCP. Теперь рассмотрим программирование сервера и клиента UDP. На рис. 21.3 показана схема диалога UDP между клиентом и сервером. Вызовы socket () и bind () быстро выполняются и немедленно возвращают ответ. Вызов recvfrom предполагает режим блокирования по умолчанию, который можно изменить на неблокированный (т.е. асинхронный) режим.

Рис 213Типичные программные вызовы в socket UDP 2110 Программа сервера UDP - фото 217

Рис. 21.3.Типичные программные вызовы в socket UDP

21.10 Программа сервера UDP

Показанная ниже программа создает socket для UDP, связывает вызов с портом, а затем получает и распечатывает сообщения, которые посылаются на этот порт:

/* udpserv.c

* Для запуска программы ввести "udpserv".

*

* Сначала включить стандартные заголовочные файлы. */

#include

#include

#include

#include

#include

#include

#define BUFLEN 81

main() {

int sockMain, addrLength, msgLength;

struct sockaddr_in servAddr, clientAddr;

char buf[BUFLEN];

/* 1. Создать socket для UDP. */

if ((sockMain = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {

perror("Сервер не может открыть socket для UDP.");

exit(1);

}

/* 2. Ввести информацию в структуру данных, используемую для хранения локальных

* IP-адресов и порта. Возложить на bind получение свободных портов. */

bzero((char *)&servAddr, sizeof(servAddr));

servAddr.sin_family = AF_INET;

servAddr.sin_addr.s_addr = htonl(INADDR_ANY);

servAddr.sin_port = 0;

/* 3. Вызвать bind, которая запишет номер используемого порта

* в TCB. */

if (bind(sockMain, &servAddr, sizeof(servAddr))) {

perror("Вызов bind от сервера неудачен.");

exit(1);

}

/* 4. Извлекаем номер порта и используем функцию

* getsockname() для копирования порта в servAddr. */

addrLength = sizeof(servAddr);

if ( getsockname(sockMain, &servAddr, &addrLength)) {

perror(Вызов getsockname неудачен.");

exit(1);

}

printf("SERVER: Номер порта is %d\n", ntohs(servAddr.sin_port));

/* 5. Бесконечный цикл ожидания сообщений от клиентов. */

for (;;) {

addrLength = sizeof(clientAddr);

bzero(buf, BUFLEN);

if ((msgLength = recvfrom(sockMain, buf, BUFLEN, 0, &clientAddr, &addrLength)) < 0) {

perror("Плохой socket клиента.");

exit(1);

}

/* 6. Распечатать клиентские IP-адрес и порт вместе с сообщением. */

printf("SERVER: IP-адрес клиента: %s\n",

inet_ntoa(clientAddr.sin_addr));

printf("SERVER: Порт клиента: %d\n",

ntohs(clientAddr.sin_port));

printf("SERVER: Длина сообщения %d\n", msgLength);

printf("SERVER: Сообщение: %s\n\n", buf);

}

}

21.10.1 Вызовы в серверной программе UDP

1. sockMain = socket(AF_NET, SOCK_DGRAM, 0);

Семейство адресов — снова Интернет.

2. bzero((char *)&servAddr, sizeof(servAddr));

servAddr.sin_family = AF_INET;

servAddr.sin_addr.s_addr = htonl(INADDR_ANY);

servAddr.sin_port = 0;

Вызовы инициализации адресной структуры сервера те же, что и в программе для TCP.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «TCP/IP Архитектура, протоколы, реализация (включая IP версии 6 и IP Security)»

Представляем Вашему вниманию похожие книги на «TCP/IP Архитектура, протоколы, реализация (включая IP версии 6 и IP Security)» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «TCP/IP Архитектура, протоколы, реализация (включая IP версии 6 и IP Security)»

Обсуждение, отзывы о книге «TCP/IP Архитектура, протоколы, реализация (включая IP версии 6 и IP Security)» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x