Hallo Sascha,
hab versucht auf udp umzustellen und erhalte folgendes Ergebnis:
19:53:33.628 - network: udp message from IP, size 64 bytes
19:53:33.629 - parser: parsing sequence: <UDP.SOCK><SEND=SELECT c00 FROM movie WHERE c07=2006></UDP.SOCK>
19:53:33.630 - parser: command: UDP.SOCK - SEND=SELECT c00 FROM movie WHERE c07=2006
19:53:33.630 - parser: reply sequence: <UDP.SOCK>SEND=|OK</UDP.SOCK>
19:53:33.633 - commandserver: UDP send: IP:8000 data: SELECT c00 FROM movie WHERE c07=2006
19:53:33.638 - commandserver: UDP receive: IP:8000 data: |16 Blocks
19:53:33.640 - commandserver: translated reply sequence: <UDP.SOCK>|16 Blocks|OK</UDP.SOCK>
19:53:33.648 - network: message parsed
19:53:33.666 - commandserver: UDP receive: IP:8000 data: |300
19:53:33.670 - commandserver: translated reply sequence: <UDP.SOCK>|300|OK</UDP.SOCK>
19:53:33.688 - commandserver: UDP receive: IP:8000 data: |An Inconvenient Truth
19:53:33.690 - commandserver: translated reply sequence: <UDP.SOCK>|An Inconvenient Truth|OK</UDP.SOCK>
19:53:33.707 - commandserver: UDP receive: IP:8000 data: |Babel
19:53:33.708 - commandserver: translated reply sequence: <UDP.SOCK>|Babel|OK</UDP.SOCK>
19:53:33.726 - commandserver: UDP receive: IP:8000 data: |Blood Diamond
19:53:33.727 - commandserver: translated reply sequence: <UDP.SOCK>|Blood Diamond|OK</UDP.SOCK>
19:53:33.744 - commandserver: UDP receive: IP:8000 data: |Das Leben der Anderen
19:53:33.746 - commandserver: translated reply sequence: <UDP.SOCK>|Das Leben der Anderen|OK</UDP.SOCK>
19:53:33.763 - commandserver: UDP receive: IP:8000 data: |Deja Vu
19:53:33.765 - commandserver: translated reply sequence: <UDP.SOCK>|Deja Vu|OK</UDP.SOCK>
19:53:33.782 - commandserver: UDP receive: IP:8000 data: |Dreamgirls
19:53:33.783 - commandserver: translated reply sequence: <UDP.SOCK>|Dreamgirls|OK</UDP.SOCK>
19:53:33.800 - commandserver: UDP receive: IP:8000 data: |Pirates of the Caribbean: Dead Man's Chest
19:53:33.802 - commandserver: translated reply sequence: <UDP.SOCK>|Pirates of the Caribbean: Dead Man's Chest|OK</UDP.SOCK>
19:53:33.819 - commandserver: UDP receive: IP:8000 data: |Hollywoodland
19:53:33.821 - commandserver: translated reply sequence: <UDP.SOCK>|Hollywoodland|OK</UDP.SOCK>
19:53:33.838 - commandserver: UDP receive: IP:8000 data: |The Departed
19:53:33.839 - commandserver: translated reply sequence: <UDP.SOCK>|The Departed|OK</UDP.SOCK>
19:53:33.860 - commandserver: UDP receive: IP:8000 data: |The Good Shepherd
19:53:33.862 - commandserver: translated reply sequence: <UDP.SOCK>|The Good Shepherd|OK</UDP.SOCK>
19:53:33.880 - commandserver: UDP receive: IP:8000 data: |The Prestige
19:53:33.882 - commandserver: translated reply sequence: <UDP.SOCK>|The Prestige|OK</UDP.SOCK>
19:53:33.900 - commandserver: UDP receive: IP:8000 data: |Volver
19:53:33.901 - commandserver: translated reply sequence: <UDP.SOCK>|Volver|OK</UDP.SOCK>
19:53:33.918 - commandserver: UDP receive: IP:8000 data: |Cars
19:53:33.920 - commandserver: translated reply sequence: <UDP.SOCK>|Cars|OK</UDP.SOCK>
19:53:33.937 - commandserver: UDP receive: IP:8000 data: |The Da Vinci Code
19:53:33.939 - commandserver: translated reply sequence: <UDP.SOCK>|The Da Vinci Code|OK</UDP.SOCK>
19:53:33.956 - commandserver: UDP receive: IP:8000 data: |Penelope
19:53:33.958 - commandserver: translated reply sequence: <UDP.SOCK>|Penelope|OK</UDP.SOCK>
19:53:33.975 - commandserver: UDP receive: IP:8000 data: |Rescue Dawn
19:53:33.976 - commandserver: translated reply sequence: <UDP.SOCK>|Rescue Dawn|OK</UDP.SOCK>
19:53:33.994 - commandserver: UDP receive: IP:8000 data: |Notebook
19:53:33.995 - commandserver: translated reply sequence: <UDP.SOCK>|Notebook|OK</UDP.SOCK>
19:53:34.012 - commandserver: UDP receive: IP:8000 data: |Trixie
19:53:34.015 - commandserver: translated reply sequence: <UDP.SOCK>|Trixie|OK</UDP.SOCK>
Jetzt kommt jeder Titel einzeln.
Im Terminal sieht das Ergebnis der Sqlite Abfrage so aus:
|16 Blocks|300|An Inconvenient Truth|Babel|Blood Diamond|Das Leben der Anderen|Deja Vu|Dreamgirls|Pirates of the Caribbean: Dead Man's Chest|Hollywoodland|The Departed|The Good Shepherd|The Prestige|Volver|Cars|The Da Vinci Code|Penelope|Rescue Dawn|Notebook|Trixie
Das Perl Script für den Server:
# UDP message server
use strict;
use DBI;
use IO::Socket;
use Encode qw(decode);
# Datenbank
my $dbargs = {AutoCommit => 0, PrintError => 1};
my $dbh = DBI->connect("dbi:SQLite:dbname=MyVideos34.db", "", "", $dbargs);
my($data, $sock, $res, $newmsg, $MAXLEN, $PORTNO);
$MAXLEN = 1024;
$PORTNO = 8000;
$sock = IO::Socket::INET->new(LocalPort => $PORTNO, Proto => 'udp')
or die "socket: $@";
print "Warte auf UDP Nachricht von Port $PORTNO\n";
while ($sock->recv($newmsg, $MAXLEN)) {
my($port, $ipaddr) = sockaddr_in($sock->peername);
print "Befehl von Client: $newmsg\n";
($data) = "";
$res = $dbh->selectall_arrayref("$newmsg;") or die "Couldn't prepare statement: " . $dbh->errstr;
foreach my $row (@$res) {
($data) = @$row;
$sock->send(decode("utf-8","|$data"));
} }
die "recv: $!";
$dbh->disconnect();
Wie muss ich die Ausgabe an den Socket ändern?
Hast Du eine Idee...
Klaus
hab versucht auf udp umzustellen und erhalte folgendes Ergebnis:
19:53:33.628 - network: udp message from IP, size 64 bytes
19:53:33.629 - parser: parsing sequence: <UDP.SOCK><SEND=SELECT c00 FROM movie WHERE c07=2006></UDP.SOCK>
19:53:33.630 - parser: command: UDP.SOCK - SEND=SELECT c00 FROM movie WHERE c07=2006
19:53:33.630 - parser: reply sequence: <UDP.SOCK>SEND=|OK</UDP.SOCK>
19:53:33.633 - commandserver: UDP send: IP:8000 data: SELECT c00 FROM movie WHERE c07=2006
19:53:33.638 - commandserver: UDP receive: IP:8000 data: |16 Blocks
19:53:33.640 - commandserver: translated reply sequence: <UDP.SOCK>|16 Blocks|OK</UDP.SOCK>
19:53:33.648 - network: message parsed
19:53:33.666 - commandserver: UDP receive: IP:8000 data: |300
19:53:33.670 - commandserver: translated reply sequence: <UDP.SOCK>|300|OK</UDP.SOCK>
19:53:33.688 - commandserver: UDP receive: IP:8000 data: |An Inconvenient Truth
19:53:33.690 - commandserver: translated reply sequence: <UDP.SOCK>|An Inconvenient Truth|OK</UDP.SOCK>
19:53:33.707 - commandserver: UDP receive: IP:8000 data: |Babel
19:53:33.708 - commandserver: translated reply sequence: <UDP.SOCK>|Babel|OK</UDP.SOCK>
19:53:33.726 - commandserver: UDP receive: IP:8000 data: |Blood Diamond
19:53:33.727 - commandserver: translated reply sequence: <UDP.SOCK>|Blood Diamond|OK</UDP.SOCK>
19:53:33.744 - commandserver: UDP receive: IP:8000 data: |Das Leben der Anderen
19:53:33.746 - commandserver: translated reply sequence: <UDP.SOCK>|Das Leben der Anderen|OK</UDP.SOCK>
19:53:33.763 - commandserver: UDP receive: IP:8000 data: |Deja Vu
19:53:33.765 - commandserver: translated reply sequence: <UDP.SOCK>|Deja Vu|OK</UDP.SOCK>
19:53:33.782 - commandserver: UDP receive: IP:8000 data: |Dreamgirls
19:53:33.783 - commandserver: translated reply sequence: <UDP.SOCK>|Dreamgirls|OK</UDP.SOCK>
19:53:33.800 - commandserver: UDP receive: IP:8000 data: |Pirates of the Caribbean: Dead Man's Chest
19:53:33.802 - commandserver: translated reply sequence: <UDP.SOCK>|Pirates of the Caribbean: Dead Man's Chest|OK</UDP.SOCK>
19:53:33.819 - commandserver: UDP receive: IP:8000 data: |Hollywoodland
19:53:33.821 - commandserver: translated reply sequence: <UDP.SOCK>|Hollywoodland|OK</UDP.SOCK>
19:53:33.838 - commandserver: UDP receive: IP:8000 data: |The Departed
19:53:33.839 - commandserver: translated reply sequence: <UDP.SOCK>|The Departed|OK</UDP.SOCK>
19:53:33.860 - commandserver: UDP receive: IP:8000 data: |The Good Shepherd
19:53:33.862 - commandserver: translated reply sequence: <UDP.SOCK>|The Good Shepherd|OK</UDP.SOCK>
19:53:33.880 - commandserver: UDP receive: IP:8000 data: |The Prestige
19:53:33.882 - commandserver: translated reply sequence: <UDP.SOCK>|The Prestige|OK</UDP.SOCK>
19:53:33.900 - commandserver: UDP receive: IP:8000 data: |Volver
19:53:33.901 - commandserver: translated reply sequence: <UDP.SOCK>|Volver|OK</UDP.SOCK>
19:53:33.918 - commandserver: UDP receive: IP:8000 data: |Cars
19:53:33.920 - commandserver: translated reply sequence: <UDP.SOCK>|Cars|OK</UDP.SOCK>
19:53:33.937 - commandserver: UDP receive: IP:8000 data: |The Da Vinci Code
19:53:33.939 - commandserver: translated reply sequence: <UDP.SOCK>|The Da Vinci Code|OK</UDP.SOCK>
19:53:33.956 - commandserver: UDP receive: IP:8000 data: |Penelope
19:53:33.958 - commandserver: translated reply sequence: <UDP.SOCK>|Penelope|OK</UDP.SOCK>
19:53:33.975 - commandserver: UDP receive: IP:8000 data: |Rescue Dawn
19:53:33.976 - commandserver: translated reply sequence: <UDP.SOCK>|Rescue Dawn|OK</UDP.SOCK>
19:53:33.994 - commandserver: UDP receive: IP:8000 data: |Notebook
19:53:33.995 - commandserver: translated reply sequence: <UDP.SOCK>|Notebook|OK</UDP.SOCK>
19:53:34.012 - commandserver: UDP receive: IP:8000 data: |Trixie
19:53:34.015 - commandserver: translated reply sequence: <UDP.SOCK>|Trixie|OK</UDP.SOCK>
Jetzt kommt jeder Titel einzeln.
Im Terminal sieht das Ergebnis der Sqlite Abfrage so aus:
|16 Blocks|300|An Inconvenient Truth|Babel|Blood Diamond|Das Leben der Anderen|Deja Vu|Dreamgirls|Pirates of the Caribbean: Dead Man's Chest|Hollywoodland|The Departed|The Good Shepherd|The Prestige|Volver|Cars|The Da Vinci Code|Penelope|Rescue Dawn|Notebook|Trixie
Das Perl Script für den Server:
# UDP message server
use strict;
use DBI;
use IO::Socket;
use Encode qw(decode);
# Datenbank
my $dbargs = {AutoCommit => 0, PrintError => 1};
my $dbh = DBI->connect("dbi:SQLite:dbname=MyVideos34.db", "", "", $dbargs);
my($data, $sock, $res, $newmsg, $MAXLEN, $PORTNO);
$MAXLEN = 1024;
$PORTNO = 8000;
$sock = IO::Socket::INET->new(LocalPort => $PORTNO, Proto => 'udp')
or die "socket: $@";
print "Warte auf UDP Nachricht von Port $PORTNO\n";
while ($sock->recv($newmsg, $MAXLEN)) {
my($port, $ipaddr) = sockaddr_in($sock->peername);
print "Befehl von Client: $newmsg\n";
($data) = "";
$res = $dbh->selectall_arrayref("$newmsg;") or die "Couldn't prepare statement: " . $dbh->errstr;
foreach my $row (@$res) {
($data) = @$row;
$sock->send(decode("utf-8","|$data"));
} }
die "recv: $!";
$dbh->disconnect();
Wie muss ich die Ausgabe an den Socket ändern?
Hast Du eine Idee...
Klaus
Kommentar