|
|||
«Сложный» 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() и, наконец, используем эту функциюдля создания конечного варианта адреса удалённого сервера:
|
|||
|