示例#1
0
  private function retransmit($now)
  {
    foreach($this->_transfers as $peer => $transfer) {
      $reply = $transfer->retransmit($now);
      if($reply !== false) {
	$this->log_debug($peer, "resend: " .
			 TFTPServer::escape_string($reply));
	stream_socket_sendto($this->_socket, $reply, 0, $peer);
      }

      if($transfer->state == TFTPTransferState::TERMINATING)
	unset($this->_transfers[$peer]);
    }
  }
示例#2
0
function test($server_url, $name, $packet_pairs) 
{
  $timeout = 100000;

  $s = stream_socket_client($server_url, $errno, $errstr);
  if($s === false) {
    echo "FAILED\n";
    echo "Socket failed: $errno: $errstr\n";
    return false;
  }

  $step = 1;
  foreach($packet_pairs as $pair) {
    $send = $pair[0];
    $expect = $pair[1];

    if($send != null)
      stream_socket_sendto($s, $send);

    $read = array($s);
    stream_select($read, $write = null, $excpt = null, 0, $timeout);
    if(count($read) > 0)
      $result = stream_socket_recvfrom($s, 65535);
    else
      $result = null;

    if($result != $expect) {
      echo "FAILED at step $step\n";
      echo "Send  : " . TFTPServer::escape_string($send) . "\n";
      echo "Expect: " . TFTPServer::escape_string($expect) . "\n";
      echo "Result: " . TFTPServer::escape_string($result) . "\n";
      return false;
    }

    $step++;
  }

  $read = array($s);
  stream_select($read, $write = null, $excpt = null, 0, $timeout);
  if(count($read) > 0) {
    $result = stream_socket_recvfrom($s, 65535);
    echo "FAILED\n";
    echo "Got after end: " . TFTPServer::escape_string($result) . "\n";
    return false;
  }

  fclose($s);

  return true;
}