Hallo!
Habe folgendes Problem:
Ich habe einen TCP Server geschrieben, der auch auf meine Anfragen antwortet. Nur leider nur einmal, danach kann ich ihm senden was ich will und er schickt keine Antwort zurück...
Hoffe ihr könnt mir helfen
Code:
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
#!/usr/bin/perl
use IO::Socket;
use DBI;
my $dbname="Dbname";
my $username="username";
my $pw="pw";
my $data1 = "DBI:mysql:$dbname";
my $data2 = DBI->connect($data1, $username, $pw, { RaiseError => 1 }) || die("Kann MYSQL DB nicht öffnen!");
$server_socket = IO::Socket::INET->new (
LocalPort => 1000,
Listen => 10,
Proto => 'tcp',
Reuse => 1) or die "$@\n";
print "Server lauft, zum Beenden Strg+c eingeben oder Prozess killen\n";
while($client = $server_socket->accept()) {
$client_send = <$client>;
$answer = &antwort($client_send);
print $client "$answer\n";
}
my $leer = " ";
#------------------------------------------------------------------
#Protokoll beginn - ABFRAGEN , BEFEHLE etc.
sub antwort{
print $_[0];
($i1, $i2, $i3)=split($leer,$_[0]);
#Verbindungsabfrage
if($i1." ".$i2 eq "sicherheitscode connect_request\r\n") {
"connect_ok";
}
#abfrage
if($i1." ".$i2 eq "sicherheitscode get_channelliste\r\n") {
my $sql="SELECT * FROM test ORDER BY nick DESC";
my $abfr1=$data2->prepare($sql);
$abfr1->execute;
while (@ergebnis = $abfr1->fetchrow_array)
{
$ausgabeaussql .= $ergebnis[0].",";
}
print $ausgabeaussql;
return "send_channelliste|sdfgsdfgsdfgsdfg".$channelliste;
}
}