17.5.8. Клиентские приложения TCP

17.5.8. Клиентские приложения TCP

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

Ниже приводится несложный TCP-клиент, который взаимодействует с сервером, представленным в предыдущем разделе. Он принимает один аргумент: имя хоста, на котором работает сервер, или его IP-номер (в десятичном представлении с разделительными точками). Во всем остальном программа ведет себя также как клиент сокета домена Unix, показанный ранее в этой главе.

 1: /* tclient.с */

 2:

 3: /* Подключиться к серверу, чье имя хоста или IP-адрес переданы в качестве

 4: аргумента, на порте 4321. После соединения скопировать все содержимое

 5: stdin в сокет, затем завершить работу. */

 6:

 7: #include <arpa/inet.h>

 8: #include <netdb.h>

 9: #include <netinet/in.h>

10: #include <stdio.h>

11: #include <stdlib.h>

12: #include <string.h>

13: #include <sys/socket.h>

14: #include <unistd.h>

15:

16: #include "sockutil.h" /* некоторые служебные функции */

17:

18: int main(int argc, const char ** argv) {

19:  struct addrinfo hints, *addr;

20:  struct sockaddr_in * addrinfo;

21:  int rc;

22:  int sock;

23:

24:  if (argc !=2) {

25:   fprintf(stderr, "поддерживается только одиночный аргумент ");

26:   return 1;

27:  }

28:

29:  memset(&hints, 0, sizeof(hints));

30:

31:  hints.ai_socktype = SOCK_STREAM;

32:  hints.ai_flags = AI_ADDRCONFIG;

33:  if ((rc = getaddrinfo(argv[1], NULL, &hints, &addr))) {

34:   fprintf(stderr, "сбой поиска имени хоста: %s ",

35:   gai_strerror(rc));

36:   return 1;

37:  }

38:

39:  /* это позволяет получить доступ к sin_family и sin_port

40:     (которые расположены там же, где и sin6_family и sin6_port) */

41:  addrinfo = (struct sockaddr_in *) addr->ai_addr;

42:

43:  if ((sock = socket(addrInfo->sin_family, addr->ai_socktype,

44:   addr->ai_protocol)) < 0)

45:   die("socket");

46:

47:  addrInfo->sin_port = htons(4321);

48:

49:  if (connect(sock, (struct sockaddr *) addrinfo,

50:   addr->ai_addrlen))

51:   die("connect");

52:

53:  freeaddrinfo(addr);

54:

55:  copyData(0, sock);

56:

57:  close(sock);

58:

59:  return 0;

60: }

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

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

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

Кэш приложения

Из книги Язык программирования С# 2005 и платформа .NET 2.0. [3-е издание] автора Троелсен Эндрю

Кэш приложения ASP.NET предлагает еще один, более гибкий метод обработки данных уровня приложения. Вы, конечно, помните, что значения объекта HttpApplicationState остаются в памяти до тех пор, пока работает Web-приложение. Но иногда требуется, чтобы какой-то фрагмент данных приложения


Приложения

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

Приложения


Приложения

Из книги Adobe Fotoshop CS в примерах (III-IV) автора Топорков Сергей Сергеевич

Приложения Таблица горячих клавиш Название — Перевод — Горячие клавиши— Выделение — Add Selection — Добавить к выделению — <Shift>+ Clone Selection — Клонирование выделения — <Alt>+ Intersect Selection — Пересечение выделений — <Shift>+<Alt>+ Inverse — Инвертировать —


Приложения

Из книги Популярный самоучитель работы в Интернете автора Кондратьев Геннадий Геннадьевич

Приложения Приложение 1. Интересные ссылки Я не ставил задачу собрать наибольшее количество ссылок. Здесь размещены наиболее часто упоминаемые ссылки по всяким типовым разделам и парочка тех, которые мне показались интересными.Вообще-то, размещать в книге ссылки – дело


1.11. Приложения

Из книги Реферат, курсовая, диплом на компьютере автора Баловсяк Надежда Васильевна

1.11. Приложения Приложения оформляются как продолжение работы на последующих ее страницах (после списка литературы), располагаясь в порядке появления ссылок в тексте.В приложения могут выноситься формы первичных документов, как спроектированные автором, так и


Клиентские функции сокета

Из книги Системное программирование в среде Windows автора Харт Джонсон М

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


I.2 Приложения TCP/IP

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

I.2 Приложения TCP/IP С самого начала в TCP/IP было заложено несколько важных свойств для служб работы с приложениями:? Терминальный доступ к любому хосту? Возможность копирования файлов с одного хоста на другой? Обмен сообщениями электронной почты между любыми двумя


Приложения.

Из книги PGP: Кодирование и шифрование информации с открытым ключом. автора Левин Максим

Приложения. Краткий путеводитель по миру PGP. Начиная с 1991 года аббревиатура PGP стала своеобразным символом. Во-первых, она обозначает определенное семейство продуктов (в основном, разработанных Филипом Зиммерманном, или под его руководством). Во-вторых, она ассоциируется


Приложения

Из книги В социальных сетях. Twitter – 140 символов самовыражения автора Федотченко Юлия

Приложения


Клиентские библиотеки

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

Клиентские библиотеки Копии клиентских библиотек устанавливаются:* для Firebird 1.0.x имя клиентской библиотеки gds32.dll; она устанавливается в системный каталог C:WINNTsystem32 для Windows, имеющей сервисы, и в C:Windows для других версий Windows;* для Firebird 1.5 и последующих версий имя клиентской


ПРИЛОЖЕНИЯ

Из книги 19 смертных грехов, угрожающих безопасности программ автора Ховард Майкл

ПРИЛОЖЕНИЯ


Приложения

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

Приложения


Приложения. 

Из книги Анонимность и безопасность в Интернете. От «чайника» к пользователю автора Колисниченко Денис Николаевич

Приложения.  ПРИЛОЖЕНИЕ А.  ДОПОЛНИТЕЛЬНАЯ ЛИТЕРАТУРА      Если вы хотите больше узнать о языке Си и вообще о программировании, то найдете полезной следующую


Приложения

Из книги Социальные сети. ВКонтакте, Facebook и другие… автора Леонтьев Виталий Петрович

Приложения Приложение 1. Инструменты для анализа системы П1.1. Программа AVZ Программа AVZ (Антивирус Зайцева) – очень полезная утилита, и не раз меня выручала еще со времен Windows XP. Тогда я использовал антивирус Касперского, который не умел работать в безопасном режиме.


Приложения

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

Приложения Подарки – далеко не единственное, на что можно потратить «голоса»: на самом деле огромное их количество съедают контактовские приложения и виртуальные игры, которых в сети несколько тысяч. Популярность контакт-игр колоссальная: согласно статистике, в одну


Приложения

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

Приложения Насколько я помню, идея социальных мини-программ впервые появилась как раз в Facebook, и лишь потом пошла по рукам других соцсетей. Мы уже знакомы с тем, как эта штука работает «ВКонтактах» – и скажу я вам, положа руку на сердце, что для нашего юзера фейсбучные