Ciao a tutti!Vi spiego il mio problema,sperando che qualcuno mi possa aiutare
Allora stò costruendo uno script in php che dovrebbe dirmi se alcune porte sono aperte,più precisamente le UDP..Mi sono documentato e ho trovato la funzione sockopen,l'ho provata impostando il parametro "udp://.........",ma nulla mi dà sempre esito positivo ovvero le porte sono sempre aperte,ma nella realtà non è così..
Ricercando per la rete ho capito che non è possibile usare la funzione sockopen per l'UDP,in pratica bisognerebbe creare:
1)un socket sulla porta oggetto da esaminare
2)mandare un messaggio
3)aspettare la risposta: i casi sono due l'host risponde mandando un messaggio al pc mittente,l'host non risponde,ovviamente da queste condizioni si deduce se la porta è aperta o no
Lo script ma non mi funziona non compare nulla!
<?php
error_reporting(E_ALL);
echo "<h2>Connessione UDP </h2>\n";
$service_port ="4500";
$address = "localhost";
/* Crea un socket UDP. */
$socket = socket_create(AF_INET, SOCK_DGRAM, 0);
if ($socket < 0) {
echo "socket_create() fallito: motivo: " . socket_strerror($socket) . "\n";
} else {
echo "OK.\n";
}
echo "Tentativo di connessione a '$address' sulla porta '$service_port'...";
$result = socket_connect($socket, $address, $service_port);
if ($result < 0) {
echo "socket_connect() fallito.\nMotivo: ($result) " . socket_strerror($result) . "\n";
} else {
echo "OK.\n";
}
$in = "HEAD / HTTP/1.1\r\n";
$in .= "Host: localhost\r\n";
$in .= "Connection: Close\r\n\r\n";
$out = '';
echo "Invio HTTP HEAD...";
socket_write($socket, $in, strlen ($in));
echo "OK.\n";
echo "Lettura della risposta:\n\n";
while ($out = socket_read($socket, 2048)) {
echo $out;
}
echo "Chiusura del socket...";
socket_close($socket);
echo "OK.\n\n";
?>
AVETE IDEE SUL PERCHE'??Grazie mille