Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]11980[/thread]

Socket receive-Frage (Seite 2)

Leser: 6


<< |< 1 2 3 4 >| >> 36 Einträge, 4 Seiten
GwenDragon
 2008-06-07 20:11
#110869 #110869
User since
2005-01-17
14607 Artikel
Admin1
[Homepage]
user image
Verwende doch bitte mal
use strict;
use warnings;

dann wird dir Perl schon anmckern, was du fehlprogrammiert hast.

Ansonsten:
Quote
Doch leider funktioniert das nicht ...
Hat jemand eine Idee, wie warum das bei mir nicht geht ...

Was bedeutet "funktioniert das nicht"?
Nein, ohne Hintergrundinformation keine Idee.
H3llGhost
 2008-06-07 20:25
#110870 #110870
User since
2007-10-14
60 Artikel
BenutzerIn
[default_avatar]
Also Perl sagt das das hier falsch ist:

Code (perl): (dl )
1
2
3
4
$opt_configfile = "./config.conf";

# $opt_libdir - Zusatzmodule
$opt_libdir = "./";


Global symbol "$opt_configfile" requires explicit package name at test.pl line 12.
Global symbol "$opt_libdir" requires explicit package name ...

Was ist damit gemeint?

Was das Programm machen soll?
Ist ganz einfach, deswegen habe ich auch den PHP-Code gepostet.
Also man kann diese Aktualisierung per Hand starten über ein Webinterface.
Und ich möchte das mit einem geplanten Task machen, dazu möchte ich daraus aber vorher ein Perl-Skript schreiben.
Das ist der Hintergrund des Codes bzw. meines Vorhabens.
renee
 2008-06-07 20:28
#110871 #110871
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Lies Dir mal diesen Wiki:Artikel durch.
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
H3llGhost
 2008-06-07 20:42
#110872 #110872
User since
2007-10-14
60 Artikel
BenutzerIn
[default_avatar]
Danke danke ... ;)

So nun habe ich eine vernünftige Fehlermeldung:

Name "main::s_socket" used only once: possible typo at test.pl line 447.
address is ******

Use of uninitialized value $g_version in concatenation (.) or string at test.pl line 260.

// The Cheater Detection begins ...
Can't use an undefined value as a symbol reference at test.pl line 447.

Zeile 447:
my $bytes = send($::s_socket, $msg, 0, $dest);

Da die erste Fehlermeldung sich ja auch die Zeile vor 260 beziehen muss, habe ich mal alles gesucht mit socket und das ist das hier:

Code (perl): (dl )
1
2
3
4
5
6
7
if ($s_ip) { my $ip = $s_ip . ":"; } else { my $ip = "port "; }

my $s_socket = IO::Socket::INET->new(
        Proto=>"udp",
        LocalAddr=>"$s_ip",
        LocalPort=>"$s_port"
) or die ("\nCan't setup UDP socket on ".my $ip.":$s_port $!\n");
H3llGhost
 2008-06-08 00:30
#110873 #110873
User since
2007-10-14
60 Artikel
BenutzerIn
[default_avatar]
So nun habe ich es bis hier hin bekommen:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#!/usr/bin/perl

use strict;
use warnings;

use IO::Socket;
use IO::Select;
use IO::Handle;

my $g_masterserver_address = "******";
my $g_masterserver_port    = "27501";
        
        my $timeout = 0;

        my $address        = $g_masterserver_address;
        my $port           = $g_masterserver_port;
        my $dest           = sockaddr_in($port, inet_aton($address));
        my ($rin, $rout, $test);

        my $msg = chr(0xff).chr(0xff)."Z".chr(0xff);
        my $s_socket;
        my $proto = getprotobyname('udp');
        socket($s_socket, AF_INET, SOCK_DGRAM, $proto);
        my $bytes = send($s_socket, $msg, 0, $dest);
        print("sent $bytes bytes to '$address:$port'");
        my $buffer = '';
        my $s_output;
        
        while (my $rc = $s_socket->recv($s_output, 1024) ) {
                print $s_output;
                $buffer .= $s_output;
        }

exit(0);


Beim Empfangen scheiter ich ...
Die Fehlermeldung die ich bekomme ist folgende:

Can't locate object method "recv" via package "IO::Handle" at test.pl line 29.

Weiß jemand was das bedeutet?
Ich habe doch das package IO::Handle eingebunden oder?
renee
 2008-06-08 00:51
#110874 #110874
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
H3llGhost+2008-06-07 22:30:05--
Die Fehlermeldung die ich bekomme ist folgende:

Can't locate object method "recv" via package "IO::Handle" at test.pl line 29.

Weiß jemand was das bedeutet?
Ja, dass es die Methode in "IO::Handle" nicht gibt!
Quote
Ich habe doch das package IO::Handle eingebunden oder?

Ja, aber das ist ja nicht der Fehler ;-)
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
H3llGhost
 2008-06-08 00:59
#110875 #110875
User since
2007-10-14
60 Artikel
BenutzerIn
[default_avatar]
Habe ich den Befehl recv falsch benutzt?
moritz
 2008-06-08 01:03
#110876 #110876
User since
2007-05-11
923 Artikel
HausmeisterIn
[Homepage]
user image
Woher hast du denn die Information, dass CPAN:IO::Handle eine Methode namens recv hat? Ich habe das in der Dokumentation nicht gesehen. CPAN:IO::Socket hat übrigens so eine Methode...
H3llGhost
 2008-06-08 01:06
#110877 #110877
User since
2007-10-14
60 Artikel
BenutzerIn
[default_avatar]
Ich bin immer nach der Anleitung hier gegangen.
http://perldoc.perl.org/functions/send.html

Frag mich nicht warum der andauernd einen Fehler mit dem Handle ausgibt, selbst wenn ich oben das use IO::Handle entferne kommt der selbe Fehler ...
renee
 2008-06-08 01:09
#110878 #110878
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
H3llGhost+2008-06-07 23:06:58--
Ich bin immer nach der Anleitung hier gegangen.
http://perldoc.perl.org/functions/send.html
Da steht aber auch nix von recv
Quote
Frag mich nicht warum der andauernd einen Fehler mit dem Handle ausgibt, selbst wenn ich oben das use IO::Handle entferne kommt der selbe Fehler ...

Ja, warum sollte denn ein anderer Fehler kommen, wenn Du eine nicht existierende Methode eines Objekts aufrufst nur weil Du das Einbinden eines Moduls entfernst?
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
<< |< 1 2 3 4 >| >> 36 Einträge, 4 Seiten



View all threads created 2008-06-05 17:32.