21.7 Клиентская программа TCP

21.7 Клиентская программа TCP

Клиент соединяется с сервером, посылает одно сообщение, и далее работа программы завершается (фрагменты программы рассматриваются в следующем разделе). Для запуска программы конечный пользователь должен ввести имя хоста сервера, номер порта и сообщение, которое будет послано на этот сервер. Например:

tcpclient pltim.cs.yale.edu 1356 hello

/* tcpclient.с

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

 * поиск порта сервера. Для запуска клиента нужно ввести:

  * tcpclient имя_хоста порт сообщение */

#include <sys/types.h>

#include <sys/socket.h>

#include <netinet/in.h>

#include <netdb.h>

#include <stdio.h>

#include <errno.h>

main(argc, argv) /* Клиентская программа имеет входные аргументы. */

int argc;

char* argv[];

{

 int sock;

 struct sockaddr_in servAddr;

 struct hostent *hp, *gethostbyname();

 /* Аргументами будут 0:имя_программы, 1:имя_хоста, 2:порт, 3:сообщение */

 if (argc < 4) {

  printf("ВВЕСТИ tcpclient имя_хоста порт сообщение ");

  exit(1);

 }

 /* 1. Создание TCB. */

 if ((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) {

  perror("He могу получить socket ");

  exit(1);

 }

 /* 2. Заполнить поля адреса и порта сервера в servAddr.

  * Сначала заполнить нулями адресную структуру. Затем получить IP-адрес

  * для данного имени хоста и ввести его в адресную структуру.

  * Наконец ввести номер порта, взяв его из argv[2]. */

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

 servAddr.sin_family = AF_INET;

 hp = gethostbyname (argv[1]);

 bcopy(hp->h_addr, &servAddr.sin_addr, hp->h_length);

 servAddr.sin_port = htons(atoi(argv[2]));

 /* 3. Соединиться с сервером. Вызывать bind не нужно.

  * Система присвоит свободный порт во время выполнения соединения. */

 if (connect (sock, &servAddr, sizeof(servAddr)) < 0) {

  perror("Клиент не может соединиться. ");

  exit(1);

 }

 /* 4. Клиент анонсирует свою готовность послать сообщение.

  * Сообщение отправляется, и распечатывается последняя строка. */

 printf ("CLIENT: Готов к пересылке ");

 if (send(sock, argv[3], strlen(argv[3]), 0) < 0) {

  (perror("Проблемы с пересылкой. ");

  exit(1);

 }

 printf ("CLIENT: Пересылка завершена. Счастливо оставаться. ");

 close(sock);

 exit(0);

}

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Глава 1. Что такое клиентская оптимизация?

Из книги Разгони свой сайт автора Мациевский Николай

Глава 1. Что такое клиентская оптимизация? 1.1. Цели и задачи оптимизации Каждая веб-страница состоит из основного HTML-файла и набора внешних ресурсов. Говоря о размере страницы (или сайта), очень часто имеют в виду размер именно первого файла, что, естественно,


1.4. Клиентская и серверная оптимизация: сходство и различия

Из книги Linux для пользователя автора Костромин Виктор Алексеевич

1.4. Клиентская и серверная оптимизация: сходство и различия Клиентская оптимизация оперирует двумя основными принципами: меньше данных и меньше соединений. Но именно эти принципы помогают уменьшить нагрузку на сам сервер. Давайте посмотрим, как это происходит и как


4.7.1. Программа tar

Из книги Linux-сервер своими руками автора Колисниченко Денис Николаевич

4.7.1. Программа tar У читателя, привыкшего к архиваторам типа arj, которые собирают файлы в единый архив и сразу "сжимают" их, может возникнуть вопрос "А зачем использовать две программы?” Все дело в том, что tar расшифровывается как Tape ARchiver, он не сжимает данные, а лишь объединяет


10.2. Программа rpm

Из книги Самоучитель работы на компьютере автора Колисниченко Денис Николаевич

10.2. Программа rpm Название этой программы (или команды) является аббревиатурой от Redhat Package Manager. Такая расшифровка дается в большинстве книг и руководств по Linux и кажется мне более правильной и логичной, хотя в главе 6 "The Official Red Hat Linux Reference Guide" говорится: "The RPM Package Manager (RPM), is an open


13.3.2 Программа ftp

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

13.3.2 Программа ftp Программа ftp - это пользовательский интерфейс к стандартному протоколу передачи файлов по Интернету - File Transfer Protocol. Программа позволяет передавать файлы на удаленный компьютер и получать файлы с удаленного компьютера. Однако, введя команду ftp, вы


16.2. Клиентская часть

Из книги Программирование на языке Пролог для искусственного интеллекта автора Братко Иван

16.2. Клиентская часть Удобной программой для просмотра структуры базы данных является mysqlshow. Введите следующую команду: mysqlshow –p mysqlВ ответ вы увидите список таблиц, которые находятся в базе данных mysql.Database: mysql+--------+I Tables I+--------+I db     II host   II user   I+--------+Программа mysqlshow может


Программа Nero Express Лучшая программа для записи дисков

Из книги Linux: Полное руководство автора Колисниченко Денис Николаевич

Программа Nero Express Лучшая программа для записи дисков Записывать диски средствами Windows неинтересно. Во-первых, скучно, а во-вторых, вам недоступны какие-либо настройки записи, вы даже не можете указать скорость, не говоря уже о выборе формата диска, методе записи. Вот


21.7 Клиентская программа TCP

Из книги Ubuntu 10. Краткое руководство пользователя автора Колисниченко Д. Н.

21.7 Клиентская программа TCP Клиент соединяется с сервером, посылает одно сообщение, и далее работа программы завершается (фрагменты программы рассматриваются в следующем разделе). Для запуска программы конечный пользователь должен ввести имя хоста сервера, номер порта и


4.5.1. Программа 1

Из книги Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ автора Борри Хелен

4.5.1. Программа 1 Вначале нужно выбрать способ представления позиции на доске. Один из наиболее естественных способов — представить позицию в виде списка из восьми элементов, каждый из которых соответствует одному из ферзей. Каждый такой элемент будет описывать то поле


4.5.2. Программа 2

Из книги Язык Си - руководство для начинающих автора Прата Стивен

4.5.2. Программа 2 В соответствии с принятым в программе 1 представлением доски каждое решение имело вид[1/Y1, 2/Y2, 3/Y3, ..., 8/Y8]так как ферзи расставлялись попросту в последовательных вертикалях. Никакая информация не была бы потеряна, если бы X-координаты были пропущены. Поэтому


17.2. Клиентская часть MySQL

Из книги автора

17.2. Клиентская часть MySQL Удобной программой для просмотра структуры базы данных является mysqlshow. Введите следующую команду:$ mysqlshow -p mysqlВ ответ вы увидите список таблиц, которые находятся в базе данных mysql.Программа mysqlshow может вызываться с дополнительными ключами,


9.3. Программа apt-get

Из книги автора

9.3. Программа apt-get Предположим, у вас есть пакет package.deb. При его установке обнаружилось, что он требует наличия пакета lib.deb, который у вас не установлен. Что ж, вы находите в Интернете отсутствующий пакет, устанавливаете его способом, описанным в разд. 9.2 (то есть применяя


20.3. Программа bum

Из книги автора

20.3. Программа bum Ранее в Ubuntu имелась программа Службы (в программной группе Система | Администрирование), позволяющая включать/отключать системные сервисы. В современных версиях Ubuntu такой программы нет. Зато можно установить программу Boot-Up Manager, которая даже лучше, чем


Клиентская библиотека Firebird

Из книги автора

Клиентская библиотека Firebird Клиентская библиотека Firebird поставляется во множестве вариантов, которые обрабатывают идентичные API-функции приложений для версии сервера, к которому они обращаются. В табл. 7.1 в конце этой главы представлены имена и размещение этих библиотек.В


Программа

Из книги автора

Программа      Ниже приводится короткая программа, позволяющая узнавать номер кода символа даже в том случае, если на вашей машине не используется код ASCII. main( )   /* определяет номер кода символа */{   char ch;   printf(" Введите, пожалуйста, символ . ");   scanf(" %c", &ch);   /* ввод