Thread was ist an der syntax falsch??
(61 answers)
Opened by grey1987 at 2007-11-26 12:25
ich bin nur auf die aussage von nepos eingegangen
"Hatten wir eigentlich schon ein paar Postings vorher geklärt, dass das so nicht geht ;) " war jetzt nicht böse gemeint oder so. muss man denn dieses Code (perl): (dl
)
my $max_buf_size = 3; unbedingt angeben? bzw kann man das nicht noch umschreiben. ich hab irgendwie die aufgabe bekommen, dass die whileschleife so lange laufen soll, bis kein zeichen mehr kommt. und die if-abfrage funktioniert so auch nicht. hier mein code: 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 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 use IO::Socket; use strict; my $socket = new IO::Socket::INET (PeerAddr =>'PC110197',PeerPort => 1810) or die "Konnte Socket nicht erstellen: $!\n"; $socket->autoflush(1); my $ausgabe; print "Sende ein Client Create zum Server\n"; print $socket "CLIENT CREATE\n"; my $line = getlinefromsocket ($socket); if ($line eq 'ACK') { print "es geht!"; } elsif ($line eq 'NACK') { print "geht nicht!"; } else { print "geht nix!"; } print "\nSende ein CONNECT zum Server\n"; print $socket "CONNECT\n"; my $line = getlinefromsocket ($socket); if ($line eq 'ACK') { print "es geht!"; } elsif ($line eq 'NACK') { print "geht nicht!"; } else { print "geht nix!"; } print "\nSende ein DISCONNECT zum Server\n"; print $socket "DISCONNECT\n"; my $line = getlinefromsocket ($socket); if ($line eq 'ACK') { print "es geht!"; } elsif ($line eq 'NACK') { print "geht nicht!"; } else { print "geht nix!"; } print "\nSende ein END SESSION zum Server\n"; print $socket "END SESSION\n"; my $line = getlinefromsocket ($socket); if ($line eq 'ACK') { print "es geht!"; } elsif ($line eq 'NACK') { print "geht nicht!"; } else { print "geht nix!"; } $socket->close(); sub getlinefromsocket { my $socket = shift; my $buffer; my $char; my $max_buf_size = 3; while ( $socket->recv( $char, 1 ) ) { last if ( $char eq ' ' ); $buffer .= $char; last if ( length $buffer == $max_buf_size ); # print $char; } return $buffer; } Code: (dl
)
1 Sende ein Client Create zum Server Aber wenn ich jetzt anstatt CONNECT -> CONECT eingebe (kommt kein ACK, sondern ein NACK), passiert folgendes: Code: (dl
)
1 Sende ein Client Create zum Server es müsste aber anstatt "geht nix" -> "geht nicht" heißen. das liegt daran, dass ich die 3 bei max_buf_size angeben muss. und wenn ich da 4 angebe, dann stimmt das mit dem ACK nicht mehr. siehe folgende ausgabe: Code (perl): (dl
)
1 2 3 4 5 6 7 8 Sende ein Client Create zum Server geht nix! Sende ein CONNECT zum Server geht nicht! Sende ein DISCONNECT zum Server geht nix! Sende ein END SESSION zum Server geht nix! wie kann man das denn beheben? |