The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"pop3 client на перле без pop3.pm и т.п. напрямую через сокет"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"pop3 client на перле без pop3.pm и т.п. напрямую через сокет"
Сообщение от mambur emailИскать по авторуВ закладки on 24-Окт-02, 15:18  (MSK)
пишу
  $sock = new IO::Socket::INET (PeerAddr => "$pop3",
                               PeerPort => 110,
                               Proto    => 'tcp',
                               );

    print $SOCK "USER myuser\r\n";
    while ( $so=<$sock> ){
      print "$so\n";
    }
    print $sock "pass my_secret_password\r\n";
    while ($so=<$sock>){
      print "$so\n";
    }
    print $sock "list\r\n";
    while ($so=<$sock>){
      print "$so\n";
    }

получается что-то вроде вечных циклов, а напрямую телнетом все работает!
научите как правильно. Просьба использование модулей типа ВСЁ_РАБОТАЕТ.pm не предлагать.
Спасибо.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "RE: pop3 client на перле без pop3.pm и т.п. напрямую через с..."
Сообщение от J Искать по авторуВ закладки on 24-Окт-02, 20:19  (MSK)
>пишу
>  $sock = new IO::Socket::INET (PeerAddr => "$pop3",
>                               PeerPort => 110,
>                               Proto    => 'tcp',
>            
>          
>        );
>
>    print $SOCK "USER myuser\r\n";
>    while ( $so=<$sock> ){
>      print "$so\n";
>    }
>    print $sock "pass my_secret_password\r\n";
>    while ($so=<$sock>){
>      print "$so\n";
>    }
>    print $sock "list\r\n";
>    while ($so=<$sock>){
>      print "$so\n";
>    }
>
>получается что-то вроде вечных циклов, а напрямую телнетом все работает!
>научите как правильно. Просьба использование модулей типа ВСЁ_РАБОТАЕТ.pm не предлагать.
>Спасибо.

@answer = <$sock>;
так не пойдет?

  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "RE: pop3 client на перле без pop3.pm и т.п. напрямую через с..."
Сообщение от XMan emailИскать по авторуВ закладки on 24-Окт-02, 23:50  (MSK)
А чего ты ожидал ? Программа останавливает на первом же цикле, потому как ты ждешь, пока сервер тебе чего-то зашлет, а тем временем сервер ждет, пока ты ему чего-то зашлешь. То есть, ошибка алгоритмическая. В цикле ты должен анализировать, что сказал тебе сервер и реагироывать соответственно. Вернулась от сервера строка с подтверждением логина и запросом пароля - дать пароль. И т.д.
Живой пример:

print $sock "USER username\n";
print $sock "PASS password\n";
print $sock "LIST\n";
while (<$sock>) {
  s/\r|\n//;
  print "$_\n";
  last if ($_ eq '.');
};

Тоже работает без анализа. Только одна проверка - точка в конце списка. После чего - выход.

  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру