Алгоритмы клиентов TCP

Разработка клиентского программного обеспечения обычно проще по сравнению с разработкой серверного программного обеспечения. Поскольку все проблемы обеспечения надежности и управления потоком данных решаются с помощью протокола TCP, задача построения клиента с использованием TCP является наиболее простой из всех задач сетевого программирования. В клиенте TCP применяется алгоритм 6.1 для установления соединения с сервером и обмена с ним данными. В соответствии с этим алгоритмом, клиентское приложение распределяет сокет и подключает его к серверу. Затем оно отправляет через установленное соединение запросы и получает ответы. В следующих разделах каждый из этапов данного алгоритма рассматривается более подробно. Джаз тур организует экскурсионные туры во Францию семеный отдых. Автобусные туры по европе с отдыхом на море. Автобусные туры в германию туры по европе. Декоративная и натуральная: духи оптом. Как стать любимцем судьбы.

Алгоритм 6.1. Клиент с установлением логического соединения

  1. Найти IP-адрес и номер порта протокола сервера, с которым необходимо установить связь.
  2. Распределить сокет.
  3. Указать, что для соединения нужен произвольный, неиспользуемый порт протокола на локальном компьютере, и позволить программному обеспечению TCP выбрать такой порт.
  4. Подключить сокет к серверу.
  5. Выполнять обмен данными с сервером по протоколу прикладного уровня (для этого обычно требуется передавать запросы и принимать ответы).
  6. Закрыть соединение
6.11. Распределение сокета

В предыдущих разделах уже рассматривались способы, используемые для поиска IP-адреса сервера, а также была описана функция socket, которая применяется для распределения сокета связи. В клиентах, использующих протокол TCP, необходимо указать семейство протоколов PF_INET и службу S0CKJ5TREAM. Программа начинается с операторов include, которые ссылаются на файлы, содержащие определения символических констант, используемых в вызове, и объявление переменной, предназначенной для хранения дескриптора сокета. Если служба, обозначенная вторым параметром, предоставляется несколькими протоколами в семействе протоколов, обозначенным первым параметром, то третий параметр вызова функции socket должен указывать конкретный протокол. В случае семейства протоколов Internet доступ к службе SOCK_STREAM предоставляет только протокол TCP. Поэтому третий параметр не должен применяться; вместо него необходимо задать 0:

int s; /* Дескриптор сокета */ s = socket( PF_INET, S0CKJ3TREAM, 0); 6.12. Выбор локального номера порта протокола

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

Безусловно, если клиенту требуется локальный порт протокола, он может выбирать случайным образом произвольный порт, пока не найдет тот, который соответствует критериям, приведенным выше. Однако интерфейс сокетов в значительной степени упрощает выбор клиентского порта, поскольку в нем предусмотрен способ, в соответствии с которым клиент позволяет программному обеспечению TCP выбрать локальный порт автоматически. Выбор локального порта, соответствующего вышеуказанным критериям, происходит как побочный эффект вызова функции connect.

Похожие статьи Меню Опрос Фото Популярное