bekomme leeren string zurück bei socket verbindung zu server.pl
Tristl Christian
- php
Hallo,
ich hänge breits seit 2 Tagen an der selben Stelle, hoffe jemand von euch hat etwas Ähnliches bereits hinter sich und kann mir helfen:
zum Script:
das server.pl script gibt eine ankommenden Socket an Isptool.pm (genauer die Funkion Isptool::test2) weiter.
Problem:
per php-script will ich einen einfachen String an den Perl- Echo-Server schicken und die Antwort ausgeben.
Leider kommt nach der Greeting-Messages nur ein leerer String (die eigentliche Antwort) zurück ? Warum ?????
Versucht:
da eine telnet-Verbingung einwandfrei funktioniert vermute ich den Fehler im PHP-Teil.
Ich bin für jede noch so kleine Anregung, Kritik, Hilfe dankbar!
Christian Tristl
hier meine scrits:
---- server.pl ------
#!/usr/bin/perl
use warnings;
use strict;
require NetServer::Generic;
use Isptool;
my ($foo) = new NetServer::Generic;
$foo->port(9000);
$foo->callback(&Isptool::test2);
$foo->mode("forking");
print "Starting server on port 9000\n";
$foo->run();
---ENDE-----
----- Isptool.pm -------
#!/usr/bin/perl
############################################################
############################################################
use warnings;
use strict;
package Isptool;
sub test2 {
select (STDOUT);
$| = 1;
my ($tmp) = "";
my ($s) = shift ;
print STDOUT "Echo server: type bye to quit, exit ",
"to kill the server.\n\n" ;
while (defined ($tmp = <STDIN>)) {
return if ($tmp =~ /^bye/i);
$s->quit() if ($tmp =~ /^exit/i);
print STDOUT "You said: $tmp\n";
if (STDOUT) {
print STDERR "da geht was auf sOUT:\n";
}
print STDERR "$tmp\n";
}
} # Ende der test2 func
-------- ENDE ----------
--------- socket6.php ---------
<html>
<head>
TCP-IP socket zwischen FrontEnd und Perl-Master-Server
</head>
<body>
<?
// form not yet submitted
if (!$submit)
{
?>
<form action="<? echo $PHP_SELF; ?>" method="post">
Enter some text:<br>
<input type="Text" name="message" size="15"><input type="submit"
name="submit" value="Send">
</form>
<?
}
else
{
// form submitted
// where is the socket server?
$host="127.0.0.1";
$port ="9000";
// open a client connection
$fp = fsockopen ($host, $port, $errno, $errstr);
if (!$fp)
{
$result = "Error: could not open socket connection";
}
else
{
// get the welcome message
$res = fgets ($fp, 1024);
echo "<br>greeting message", $res ,"<br>";
// write the user string to the socket
$res_put = fputs ($fp, $message);
if ($res_put < 0) {
echo "Fehler in fputs";
}
echo $res_put;
// get the result
$result .= fgets ($fp, 1024);
echo "<br>Result:" , $result, "!";
if ($result < 0)
{
echo "fehler in fgets; keine daten angekommen!";
}
if ($result == "false") {
echo "<br>im String ist nix drin; string ist false<br>";
}
// close the connection
# fputs ($fp, "bye");
fclose ($fp);
// trim the result and remove the starting ?
$result = trim($result);
$result = substr($result, 2);
// now print it to the browser
}
?>
Server said: <b><? echo $result; ?></b>
<?
}
?>
</body>
</html>
--------- ENDE ---------