0)) { echo "ERROR: $errno - $errstr\n"; exit; } if (!stream_set_blocking($client, 0)) { echo "ERROR: Cannot set non-blocking mode!\n"; exit; } out(__FILE__, __LINE__, "Starting test..."); while (!feof($client)) { //out(__FILE__, __LINE__, "Sending ping..."); fwrite($client, "PING"); //out(__FILE__, __LINE__, "Reading reply..."); $read = trim(fread($client, 50)); if (empty($read)) { $failed++; out(__FILE__, __LINE__, "Empty line received. Is the server there?"); } elseif ($read == "INVALID") { $failed++; out(__FILE__, __LINE__, "Server has not accepted our message."); } else { $failed = 0; //out(__FILE__, __LINE__, "Response ${read} received."); } if ($failed == constant('MAX_FAILURES')) { out(__FILE__, __LINE__, "Too many failures! (failed=${failed})"); break; } elseif ($failed < constant('MAX_FAILURES')) { continue; } $rec = explode(":", $read); $time = $rec[0]; $right = explode("=", $rec[1]); $hash = $right[1]; $hasher = $right[0]; if (validate($time) != $hash) { out(__FILE__, __LINE__, "Invalid: ${read}/{$hash}"); $invalid++; continue; } if (!isset($data[$rec[0]])) { if (count($data) > 0) { echo $data[$rec[0]-1]."\n"; $cnt++; if ($cnt > constant('ROUNDS')) break; } $data[$rec[0]] = 0; } $data[$rec[0]]++; } array_shift($data); stream_socket_shutdown($client, STREAM_SHUT_RDWR); $avg = 0; $min = 0; $max = 0; foreach ($data as $cnt) { if ($cnt > $max) { $max = $cnt; } if (($cnt < $min) || ($min == 0)) { $min = $cnt; } $avg += $cnt; } if (count($data) > 0) { $avg = round($avg / count($data)); } out(__FILE__, __LINE__, "MIN/AVG/MAX=${min}/${avg}/${max}"); out(__FILE__, __LINE__, "INVALID=${invalid}"); ?>