Хелпикс

Главная

Контакты

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





«Сложный» TCP-клиент. socket(NAME, ADDRESSES, CONNECTION, PROTOCOL);. $internet_addr = inet_aton($remote_host)or die Could't convert\n;



«Сложный» TCP-клиент

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

#! /usr/bin/perl

 

#подключаеммодуль

use Socket;

 

#Определяем переменные:

$remote_host = " www. e1. ru";

$remote_port = 80;

 

#Создаём сокет, где SERVER - имя сокета

socket(SERVER, PF_INET, SOCK_STREAM, getprotobyname('tcp'));

 

#конструируемадресудалённогокомпьютера

$internet_addr = inet_aton($remote_host)or die " Could't convert\n";

$paddr = sockaddr_in($remote_port, $internet_addr);

 

#Подключаемся

connect(SERVER, $paddr) or die " Couldn't connect\n";

 

# посылаемприветудалённомусерверу

 

send(SERVER, " Hello, dude\n", $flags) or die " Can't send\n";

 

# Получаем ответ от сервера

@answer = < SERVER>;

 

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

print @answer;

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

close(SERVER);

 

 

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

Как видишь, пример получился несколько больше и сложнее.

Давай разбираться. После всех формальностей, типаподключения модулей и объявлений переменных, идёт функция создания сокета:

socket(NAME, ADDRESSES, CONNECTION, PROTOCOL);

 

Здесь:

NAME – имя сокета, что-то типа переменной только для сокетов.

ADDRESSES – тип адресов, используемых в сокете, у нас PF_INET, так как используем IP адресацию.

CONNECTION – тип сокета, у нас потоковые

PROTOCOL – используемый протокол, мы получаем нужную константус помощью функцииgetprotobyname().

 

Дальше по идеи мы должны соединиться с удалённым сервером –для этого служит функция connect() – но она имеет свои приблуды, поэтому для начала мы подготавливаем соответствующую структурув виде адреса, куда хотим подключаться:

 

$internet_addr = inet_aton($remote_host)or die " Could't convert\n";

 

Тут мы преобразовали стандартный адрес, подходящий дляфункции sockaddr_in() и, наконец, используем эту функциюдля создания конечного варианта адреса удалённого сервера:

 



  

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