Hallo,nach längerer Abstinenz hab ich mich mal wieder an eine kleine Perl Programmierung herangewagt und probier gerade etwas mit einer Socketkommunikation herum. Da ich das ganze etwas trennen will habe ich für verschiedene Bereiche eigene Module eingebaut.
Und hier ist jetzt gerade das Problem:
Hier mal der Code:
while (($Timeout eq "false") && accept(Client, Server))
{
#Server may run and a connection to a client has been found
Messages::PrintToLog("Client Connected\n");
my $clientHandle = getpeername (Client) or print "Could not identify Client: $!\n";
my ($port, $iaddr) = unpack_sockaddr_in($clientHandle);
my $clientIP = inet_ntoa($iaddr);
Messages::PrintToLog("Client IP: $clientIP \n");
# if there comes no answer from the client for
# $Timeout in Minutes -> Disconnect the client
# Check which branch to go
my $answer = <Client>;# or $answer = "nothing";
if ($answer eq "AdminUserLogin\n")
{
print Client "test";
AdminFunctions::MainCall($clientHandle);
#$Timeout = "true";
}
elsif($answer eq "ShutDown\n")
{
#DEBUG ONLY
$Timeout = "true";
}
Messages::PrintToLog("Got something from the Client: $answer");
Messages::PrintToLog("Closing Client.\n");
close Client;
}
das Problem bezieht sich auf die Zeile:
AdminFunctions::MainCall($clientHandle); ich will den Client irgendwie übergeben, damit ich innerhalb des modules die weitere Kommunikation zwischen dem Client und dem Server abhandeln kann. (wie authorisierung und ähnliches, sprich ich müsste da kommunizieren) Das ganze klappt so aber nicht wirklich.
Also im Modul würde momentan das stehen:
sub MainCall
{
$ClientHandle = shift @_;
Messages::PrintToLog("Admin: MainCall");
print $ClientHandle "Testing";
#my $Answer = <$ClientHandle>;
}
Und das ganze scheint an der Stelle vom print $clientHandle aufzuhängen.
Seht ihr meine Fehler?
Was mache ich falsch?
Danke schon mal für eure Hilfe
Datum: 04.12.2006-10:28
