1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

Perlfrage: Senden und Empfangen von Strings

Discussion in 'Programmieren' started by h3llghost, Jun 8, 2008.

Thread Status:
Not open for further replies.
  1. h3llghost

    h3llghost Kbyte

    Hallo Leute,

    ich habe folgenden Code in PHP:

    PHP:
          $host gethostbyname("localhost");
          
    $port 27501;
          
    $socket socket_create(AF_INETSOCK_DGRAMSOL_UDP);
          
    $packet chr(255).chr(255)."Z".chr(255);
          
    $bytes_sent socket_sendto($socket$packetstrlen($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, &$buffer20000, &$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($buffer9strlen($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!
     
Thread Status:
Not open for further replies.

Share This Page