Читаем Linux: Полное руководство полностью

♦ SHUT_RD (или 0) — передать данные, которые еще не переданы, но их отправка уже началась, и больше не принимать данные для чтения.

♦ SHUT_WR (или 1) — передать данные и запретить прием данных через сокет.

♦ SHUT_RDWR (или 2) — передать данные и запретить вообще обмен через сокет — ни приема, ни передачи.

27.3.7. Программа-сервер

В этом пункте мы напишем две программы — сервер и клиент. Программа-сервер после запуска сразу же перейдет в режим ожидания («прослушивания») новых клиентов. Максимальное количество клиентов —3. Как только подключится клиент, сервер отправит ему сообщение «What is your name?», в ответ на которое клиент передаст свое имя — «Denis». Сервер прочитает переданную клиентом информацию и выведет ее на консоль. Клиент, в свою очередь, выведет на консоль запрос сервера.

С целью упрощения исходного кода как сервера, так и клиента, обработку ошибок производить не будем, поэтому будьте готовы к тому, что ваш клиент выдаст сообщение Segmentation fault в ответ на неверно заданные параметры. Я рекомендую в качестве имени сервера использовать localhost и обе программы запускать на одном компьютере — это же только демонстрация.

Вот исходный код программы-сервера:

Листинг 27.3. Программа-сервер

#include

#include

#include

#include

#include

#include


#define SERVER_PORT 1234

#define BUF_SIZE 64

#define MSG_TO_SEND "What is your name?\n"


int main() {

 int sock1, sock2;

 int ans_len, total=0;

 char buffer[BUF_SIZE];

 struct sockaddr_in sin, client;


 sock1 = socket(AF_INET, SOCK_STREAM, 0);

 memset((char *)&sin, '\0', sizeof(sin));


 sin.sin_family = AF_INET;

 sin.sin_addr.s_addr = INADDR_ANY;

 sin.sin_port = SERVER_PORT;


 bind(sock1, (struct sockaddr *)&sin, sizeof(sin));

 printf("Server running...\n");

 listen(sock1, 3);


 while (1) {

  ans_len = sizeof(client);

  sock2 = accept(sock1, &client, &ans_len);

  write(sock2, MSG_TO_SEND, sizeof(MSG_TO_SEND));

  total+=1;

  ans_len = read(sock2, buffer, BUF_SIZE);

  write(1, buffer, ans_len);

  printf("Client no %d\n", total);

  shutdown(sock2, 0);

  close(sock2);

 }

 return 0;

}

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

Стандартные номера портов определены в файле netinet/in.h:

enum {

 IPPORT_ECHO = 7, /* Echo service. */

 IPPORT_DISCARD = 9, /* Discard transmissions service. */

 IPPORT_SYSTAT = 11, /* System status service. */

 IPPORT_DAYTIME = 13, /* Time of day service. */

 IPPORT_NETSTAT = 15, /* Network status service. */

 IPPORT_FTP = 21, /* File Transfer Protocol. */

 IPPORT_TELNET =23, /* Telnet protocol. */

 IPPORT_SMTP = 25, /* Simple Mail Transfer Protocol. */

 IPPORT_TIMESERVER = 37, /* Timeserver service. */

 IPPORT_NAMESERVER = 42, /* Domain Name Service. */

 IPPORT_WHOIS = 43, /* Internet Whois service. */

 IPPORT_MTP = 57,

 IPPORT_TFTP = 69, /* Trivial File Transfer Protocol. */

 IPPORT_RJE = 77,

 IPPORT_FINGER = 79, /* Finger service. */

 IPPORT_TTYLINK = 87,

 IPPORT_SUPDUP = 95, /* SUPDUP protocol. */

 IPPORT_EXECSERVER = 512, /* execd service. */

 IPPORT_LOGINSERVER = 513, /* rlogind service. */

 IPPORT_CMDSERVER = 514,

 IPPORT_EFSSERVER = 520,

 /* UDP ports. */

 IPPORT_BIFFUDP = 512,

 IPPORT_WHOSERVER = 513,

 IPPORT_ROUTESERVER = 520,

Перейти на страницу:

Все книги серии Полное руководство

Похожие книги

Полное руководство по Microsoft Windows XP
Полное руководство по Microsoft Windows XP

В книге известного американского автора описывается среда ОС Windows XP и принципы ее функционирования, приведен сравнительный анализ Windows XP с предшествующими версиями операционной системы Windows. Рассматриваются вопросы применения и модификации нового интерфейса с целью получения прямого доступа ко всем функциям Windows XP обсуждаются варианты подключения к компьютерным сетям. Несколько разделов посвящены работе с реестром и конфигурационными файлами, мультимедийным функциям и разнообразным системным службам, а также методам решения проблем с программным обеспечением и оборудованием. Особое внимание уделено обеспечению безопасности операционной системы.Издание адресовано пользователям и сетевым администраторам, желающим активно применять возможности операционной системы Windows XP (в том числе и недокументированные).

Джон Поль Мюллер , Питер Нортон

ОС и Сети, интернет / ОС и Сети / Книги по IT
Веб-аналитика: анализ информации о посетителях веб-сайтов
Веб-аналитика: анализ информации о посетителях веб-сайтов

Компании в веб-пространстве тратят колоссальные средства на веб-аналитику и оптимизацию своих веб-сайтов, которые, в свою очередь, приносят миллиарды долларов дохода. Если вы аналитик или работаете с веб-данными, то эта книга ознакомит вас с новейшими точками зрения на веб-аналитику и то, как с ее помощью сделать вашу компанию весьма успешной в веб. Вы изучите инструментальные средства и показатели, которые можно использовать, но что важнее всего, эта книга ознакомит вас с новыми многочисленными точками зрения на веб-аналитику. Книга содержит много советов, приемов, идей и рекомендаций, которые вы можете взять на вооружение. Изучение веб-аналитики по этой уникальной книге позволит познакомиться с проблемами и возможностями ее современной концепции. Написанная практиком, книга охватывает определения и теории, проливающие свет на сложившееся мнение об этой области, а также предоставляет поэтапное руководство по реализации успешной стратегии веб-аналитики.Эксперт в данной области Авинаш Кошик в присущем ему блестящем стиле разоблачает укоренившиеся мифы и ведет по пути к получению действенного понимания аналитики. Узнайте, как отойти от анализа посещаемости сайта, почему основное внимание следует уделять качественным данным, каковы методы обретения лучшего понимания, которое поможет выработать мировоззрение, ориентированное на мнение клиента, без необходимости жертвовать интересами компании.- Изучите все преимущества и недостатки методов сбора данных.- Выясните, как перестать подсчитывать количество просмотренных страниц, получить лучшее представление о своих клиентах.- Научитесь определять ценность показателей при помощи тройной проверки "Ну и что".- Оптимизируйте организационную структуру и выберите правильный инструмент аналитики.- Изучите и примените передовые аналитические концепции, включая анализ SEM/PPC, сегментацию, показатели переходов и др.- Используйте решения с быстрым началом для блогов и электронной торговли, а также веб-сайтов мелкого бизнеса.- Изучите ключевые компоненты платформы экспериментирования и проверки.- Используйте анализ конкурентной разведки для обретения понимания и принятия мер.Здесь также находятся:- Десять шагов по улучшению веб-аналитики.- Семь шагов по созданию управляемой данными культуры в организации.- Шесть способов замера успеха блога.- Три секрета создания эффективной веб-аналитики.- Десять признаков великого веб-аналитика.

Авинаш Кошик

ОС и Сети, интернет