Thread <STDIN> funktioniert nicht (4 answers)
Opened by Gast at 2007-06-13 15:17

Gast Gast
 2007-06-13 15:17
#37570 #37570
Hallo.

Folgendes Problem:
Ich habe einen Client und einen Server programmiert, welche miteinander kommunizieren sollen. Ich will im Server eine Eingabe machen, die dann beim Client ankommen soll, dieser soll dann eine Rückmeldung an den Server senden, dass etwas angekommen ist.

Nun das eigentliche Problem:

Das Senden vom Server aus funktioniert mit
print "meine Nachricht\n";
einwandfrei. sobald ich aber versuche, eine Eingabe in <STDIN> zu senden, kommt beim Client nichts an, und der server "hängt sich auf"...

Server:
Code: (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 -w

use strict;
use IO::Socket;

my $sock = IO::Socket::INET->new
(
LocalAddr => '127.0.0.1',
LocalPort => 2000,
Proto => 'tcp',
Listen => 1,
Reuse => 1
);
my $client = ();

unless ($sock)
{
die "Can't start Server\n";
}
while ($client = $sock->accept()) {
if (fork() == 0) {
while (<$client>)
{
print $_;
}
$client->close() if defined $client;
die "Client closed Connection.\n";
} else {
while(<STDIN>) #wenn statt dieser schleife einfach text gesendet wird, tritt kein problem auf.
{
print $client $_;
}
}
}


Client:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/usr/bin/perl -w

use strict;
use IO::Socket;

my $server = IO::Socket::INET->new
(
PeerAddr => '127.0.0.1',
PeerPort => 2000,
Proto => 'tcp'
) || die "Can't connect to the Server: $!";

print "Connected to the Server.\n";

print $server "Welcome on the Client!\n";
print "Connect from " . $server->peerhost . "\n";
while (<$server>)
{
print $_;
print $server "Die Eingabe war: " . $_ . "\n";
}
close $server;


Was ich schon probiert habe:
* $| auf 1 gesetzt => bringt nichts
* noch ein \n an $_ angehängt => bringt nichts
* while schleife weg, einmalige Eingabe => bringt nichts
* Text in Variablen übergeben und dann senden funktioniert
* den eingegebenen text in eine andere variable übergeben und senden bringt auch nichts.

Ich hoffe ihr könnt mir helfen...

GreetZ, ~Br4inP4in~

View full thread <STDIN> funktioniert nicht