Witam,

Chciałbym zrobić coś takiego.
Przetestować serwer na możliwość transmisji danych poprzez protokół tcp na wybranym porcie.

Wyglądałoby to tak.
Na jednym serwerze mam odpalony kod w php, który nasłuchuje na podanym porcie.

Na innym serwerze mam kod, który próbuje przesłać coś na drugi serwer.

Jeżeli uda im się nawiązać kontakt, to dane są przesyłane i wyświetlane odpowiednie komunikaty no i sam komunikat.

Jak to zrobić najprościej w php v. 4 questionmark.gif

Znalazłem w sieci taki oto kod, który realizuje jak sądze to zadanie, ale jest przeznaczony dla php 5 - niestety.
Może znajdzie się ktoś kto będzie potrafił to przetrawić na php 4 ?
Byłbym ogromnie wdzięczny.

Kod
Wersja dla "serwer"
<?php
while (true)
{
// disconnected every 5 seconds...
receive_message('127.0.0.1','85',5);
}

function receive_message($ipServer,$portNumber,$nbSecondsIdle)
{
  // creating the socket...
  $socket = stream_socket_server('tcp://'.$ipServer.':'.$portNumber, $errno, $errstr);
  if (!$socket)
  {
   echo "$errstr ($errno)<br />\n";
  }
  else
   {
   // while there is connection, i'll receive it... if I didn't receive a message within $nbSecondsIdle seconds, the following function will stop.
   while ($conn = @stream_socket_accept($socket,$nbSecondsIdle))
   {
     $message= fread($conn, 1024);
     echo 'I have received that : '.$message;
     fputs ($conn, "OK\n");
     fclose ($conn);
   }
   fclose($socket);
  }
}
?>

Wersja dla "client"

<?php

send_message('127.0.0.1','85','Message to send...');

function send_message($ipServer,$portServer,$message)
{
  $fp = stream_socket_client("tcp://$ipServer:$portServer", $errno, $errstr);
  if (!$fp)
  {
     echo "ERREUR : $errno - $errstr<br />\n";
  }
  else
  {
     fwrite($fp,"$message\n");
     $response =  fread($fp, 4);
     if ($response != "OK\n")
       {echo 'The command couldn\'t be executed...\ncause :'.$response;}
     else
       {echo 'Execution successfull...';}
     fclose($fp);
  }
}
?>