|
|||
$paddr = sockaddr_in($remote_port, $internet_addr);$paddr = sockaddr_in($remote_port, $internet_addr);
Всё теперь осталось только подрубиться, что мы и делаем спомощью функции connect(), имеющий формат:
connect (NAME, $target);
где: NAME – имя сокета для подключения; $target – адрес куда подключать в специальномформате, в нашем случае $paddr.
После того, как мы подключили сокет. Ясно, что его надо бы попользоватьнемножко, что мы и делаем с помощью функции send(), имеющийформат:
send (NAME, $data, $flags);
где: NAME – имя сокета $data – что послать $flags – флаги, опции сокета – мы оставляем пустым. Ну а дальше по стандарту, как и в предыдущем варианте, получаем ответ.
Теперь, я надеюсь, тебе ясно как работать с потоковыми сокетамипоговорим о датаграммных сокетах и о создании соответствующихклиентов. В принципе они не так уж сильно отличаются от своихсобратьев в TCP, вот «простой» способ создания сокета:
UDP-клиент #подключаем Perl #! /usr/bin/perl #Подключаем наш компонент для работы с сокетом use IO:: Socket;
$remote_host = " 127. 0. 0. 1"; $remote_port = 1000;
$socket = IO:: Socket:: INET-> new( # к чему хотим присоединиться, удалённый адрес PeerAddr => $remote_host, # удалённыйпорт PeerPort => $remote_port, # протокол Proto=> " udp" ) or die " Can't connect to $remote_host: $remote_port\n";
# посылаем что-то удалённому серверу print $socket " Hello, man! \n";
#закрываем сокет close($socket);
Комментарий: Как видно теперь при создании сокета, мы убираем полеType и меняем тип протокола, убрали Type так как еслииспользуется протокол udp, то сокеты автоматом –датаграммные и всё необходимое сделает сам конструктор –в этом и упрощение такого метода. Теперь мы ничего непринимаем - это особенность протокола udp. Но, в принципе, можно поставить инструкции на приём, но не факт, что мы дождёмся ответа от сервера.
Теперь рассмотрим тоже самое, но в грубом методе:
|
|||
|