2
CPAN上有Net::Msmgr
模块。它写得很干净,乍看之下代码看起来很值得信赖。然而这个模块似乎是β和很少有文档和没有测试: -/为什么Perl的Net :: Msmgr在我尝试进行身份验证时挂起?
有没有人用在生产这种模块?我还没有设法让它现在运行,因为它需要在应用程序中完成所有的事件循环处理,正如我已经说过的,很少有文档和没有工作的例子来研究。
这就是我这么远了:
#!/usr/bin/perl
use strict;
use warnings;
use Event;
use Net::Msmgr::Object;
use Net::Msmgr::Session;
use Net::Msmgr::User;
use constant DEBUG => 511;
use constant EVENT_TIMEOUT => 5; # seconds
my ($username, $password) = qw/[email protected] my.password/;
my $buddy = '[email protected]';
my $user = Net::Msmgr::User->new(user => $username, password => $password);
my $session = Net::Msmgr::Session->new;
$session->debug(DEBUG);
$session->login_handler(\&login_handler);
$session->user($user);
my $conv;
sub login_handler {
my $self = shift;
print "LOGIN\n";
$self->ui_state_nln;
$conv = $session->ui_new_conversation;
$conv->invite($buddy);
}
our %watcher;
sub ConnectHandler {
my ($connection) = @_;
warn "CONNECT\n";
my $socket = $connection->socket;
$watcher{$connection} = Event->io(fd => $socket,
cb => [ $connection, '_recv_message' ],
poll => 're',
desc => 'recv_watcher',
repeat => 1);
}
sub DisconnectHandler {
my $connection = shift;
print "DISCONNECT\n";
$watcher{$connection}->cancel;
}
$session->connect_handler(\&ConnectHandler);
$session->disconnect_handler(\&DisconnectHandler);
$session->Login;
Event::loop();
这就是它输出:
Dispatch Server connecting to: messenger.hotmail.com:1863
Dispatch Server connected
CONNECT
Dispatch Server >>>VER 1 MSNP2 CVR0
--> VER 1 MSNP2 CVR0
Dispatch Server >>>USR 2 MD5 I [email protected]
--> USR 2 MD5 I [email protected]
Dispatch Server <<<VER 1 CVR0
<-- VER 1 CVR0
而这一切,在这里死了。登录处理程序不会被触发。我究竟做错了什么?
谢谢,我阅读。而且来源也是如此。 – codeholic 2010-04-26 09:45:29
我的问题很难,因为我总是试图在询问SO之前自己获取信息。如果我说文档很少,那就意味着我已经阅读了所有我能找到的文档(首先是关于CPAN的文档),并且它没有回答我的问题。我不是在问如何总结两个数字。我接受回答我的问题的答案。这是否激励?那么,我不知道,那我该怎么做?假装? – codeholic 2010-04-26 11:52:49
为什么 - 任何理由。 – Space 2010-04-27 08:51:41