Хелпикс

Главная

Контакты

Случайная статья





TCP - клиент



 

Сокеты бывают 2-х типов: датаграммные и потоковые.

Потоковые служат, преимущественно, для отправки данныхи приёму оных. Они как бы создают иллюзию соединенияи базируются на протоколе TCP. Датаграммные же сокетыпохоже больше на письмо – вам никто не даст гарантию, дошлоли оно вообще, базируются они на протоколе UDP.

 

Сокеты в Perl можно создавать 2-мя путями – простым и сложным.

 

Простой базируется на использовании структуры IO:: Socket:: INET. Эта структура упрощает доступ к низкоуровневым компонентам.

 

Вначале, рассмотрим создание TCP-клиента.

 

TCP - клиент

#подключаем Perl

#! /usr/bin/perl

 

#Подключаем наш компонент для работы с сокетом

use IO:: Socket;

 

$remote_host = " www. e1. ru";

$remote_port = 80;

 

$socket=IO:: Socket:: INET-> new(

# к чему хотим присоединиться, удалённый адрес

PeerAddr=> $remote_host,       

# удалённыйпорт

PeerPort=> $remote_port,       

# протокол

Proto=> " tcp",         

# тип сокета - потоковый

Type=> SOCK_STREAM) 

or die " Can't connect to $remote_host: $remote_port\n";

 

#после соединения посылаем

#что-то удалённому серверу

print $socket " Hello, dude! \n";

 

#принимаем ответ сервера.

@answer = < $socket>;

#выводим на экран ответ от сервера

print @answer;

#закрываем сокет

close($socket);

 

Комментарий:

Итак, первое, что мы делаем в листинге - это включаем компонентIO:: Socket, который и упростит нам работу. Далее определяемпеременные $remote_host и $remote_port – удалённый адрес объектаи порт. Потом вызываем конструктор компонента IO:: Socket:: INET, где последовательно определяем все поля и, наконец, совершаемдействие – посылаем что-то серверу и записываем ответ в массив.

Почему массив? Просто, чтобы записать весь ответ, а не первую строчку.

 

Теперь поговорим о сложном пути создания клиентского сокета в Perl – это его ручная сборка.

 



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.