Hallo Leute,
ich habe folgenden Code in PHP:
Im ersten Teil des Codes sendet er ja weiß und im zweiten Teil empfängt der ja was.
Den ersten Teil bekomme ich auch realisiert in Perl, aber an den Zweiten scheiter ich.
So sieht mein Perl-Code bis jetzt aus:
Hat jemand eine Idee, was ich verändern muss, damit es klappen kann?
Danke im Voraus!
ich habe folgenden Code in PHP:
PHP:
$host = gethostbyname("localhost");
$port = 27501;
$socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
$packet = chr(255).chr(255)."Z".chr(255);
$bytes_sent = socket_sendto($socket, $packet, strlen($packet), 0, $host, $port);
echo "<b>".$bytes_sent."</b> bytes <b>OK</b></li>";
echo "<li>Retrieving data from server...";
$recv_bytes = 0;
$buffer = "";
$timeout = 30;
$answer = "";
$packets = 0;
$read = array($socket);
while (socket_select($read, $write = NULL, $except = NULL, &$timeout) > 0) {
$recv_bytes += socket_recvfrom($socket, &$buffer, 2000, 0, &$host, &$port);
if (($buffer[0] == chr(255)) && ($buffer[1] == chr(255)) && ($buffer[2] == "Z") && ($buffer[3] == chr(255)) &&
($buffer[4] == "1") && ($buffer[5] == ".") && ($buffer[6] == "0") && ($buffer[7] == "0") && ($buffer[8] == chr(255))) {
$answer .= substr($buffer, 9, strlen($buffer));
}
$buffer = "";
$timeout = "1";
$packets++;
}
Im ersten Teil des Codes sendet er ja weiß und im zweiten Teil empfängt der ja was.
Den ersten Teil bekomme ich auch realisiert in Perl, aber an den Zweiten scheiter ich.
So sieht mein Perl-Code bis jetzt aus:
Code:
#!/usr/bin/perl
use strict;
use warnings;
use IO::Socket;
use IO::Select;
my $g_masterserver_address = "127.0.0.1";
my $g_masterserver_port = "27501";
my $timeout = 0;
my $address = $g_masterserver_address;
my $port = $g_masterserver_port;
my $dest = sockaddr_in($port, inet_aton($address));
my ($rin, $rout, $test);
my $msg = chr(0xff).chr(0xff)."Z".chr(0xff);
my $s_socket;
my $proto = getprotobyname('udp');
socket($s_socket, AF_INET, SOCK_DGRAM, $proto);
my $bytes = send($s_socket, $msg, 0, $dest);
print("sent $bytes bytes to '$address:$port'");
my $buffer = '';
my $s_output;
if (IO::Select->new($s_socket)->can_read(2))
{
$s_socket->recv($s_output, 1024);
print $s_output;
# print "yes";
# while (my $rc = $s_socket->recv($s_output, 1024) ) {
# print $s_output;
# $buffer .= $s_output;
# }
}
exit(0);
Hat jemand eine Idee, was ich verändern muss, damit es klappen kann?
Danke im Voraus!