Thread select() tut unverständliches: select, vec, fileno .... (3 answers)
Opened by Relais at 2003-08-29 19:07

Relais
 2003-08-29 19:07
#81357 #81357
User since
2003-08-06
2246 Artikel
ModeratorIn
[Homepage] [default_avatar]
Folgender legacy-Code läuft und läuft. Jedoch nicht mit einem FTP-Proxy...

CMD ist ein Socket mit bestehender FTP-Verbindung.

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    $cmd = "quote site ftp.example.com";

...

local($rin);
print CMD $cmd,"\r\n";

vec($rin,fileno(CMD),1) = 1;
for (;;) {
if (($Timeout==0) || select($rout=$rin, undef, undef, $Timeout)) {
unless(sysread(CMD, $buf, 1024)) {
$Error = "Unexpected EOF on command channel";
return undef;
}
}

...

}


Das führt zu ebendem "Unexpected EOF on command channel".
Das Kommando, an dem sich der FTP-Proxy stört lautet allerdings:
"QUOTE site ftp.example.com"

Warum Großbuchstaben beim ersten Wort? Es ist definitiv in dem obigen print noch in Kleinbuchstaben gewesen, daß zeigt der Perl-Debuger.

Manuelles ftp ist auch möglich, das Kommando "quote site ftp.example.com" stellt den Proxy vollständig zufrieden. Nur mit "QUOTE site ftp.example.com" kommt er nicht klar.

Habt ihr ne Idee? Die welt des 4-Argumente-select() ist mir und meinen Kollegen leider ziemlich fremd. Die perldocs zu <!--pod_f1--><a href="//www.perldoc.com/perl5.8.0/pod/func/select.html" target="_blank">perldoc <!--pod_f2-->-f select<!--pod_f3--></a><!--pod_f4-->, <!--pod_f1--><a href="//www.perldoc.com/perl5.8.0/pod/func/vec.html" target="_blank">perldoc <!--pod_f2-->-f vec<!--pod_f3--></a><!--pod_f4--> und <!--pod_f1--><a href="//www.perldoc.com/perl5.8.0/pod/func/fileno.html" target="_blank">perldoc <!--pod_f2-->-f fileno<!--pod_f3--></a><!--pod_f4--> sind sicherlich gut gemeint und zeigen verflixt ähnlichen Code wie den obigen, nur sie beschreiben ihn nicht so, daß ich daraus schlau würde. Ist hier vielleicht jemand bereits so schlau?\n\n

<!--EDIT|Relais|1062169719-->
Erst denken, dann posten --
27. Deutscher Perl- u. Raku -Workshop (Termin wird noch gesucht) 2025 in München.

Winter is Coming

View full thread select() tut unverständliches: select, vec, fileno ....