http://alpha-thema-online.uv.ro
Fa-ti si tu propriul forum, pe www.myforum.ro!
Pagina de start a forumului http://alpha-thema-online.uv.ro Autentificare Inregistrare FAQ Membri Cautare

Pagina de start a forumului http://alpha-thema-online.uv.ro » Web development » PHP si functiile de retea PHP
Creaza un subiect nou  Raspunde la subiect Subiectul anterior :: Subiectul urmator 
PHP si functiile de retea PHP
MesajTrimis: 19/07/2007 17:00 Raspunde cu citat (quote)
Ad_Infinitum
Administrator
Administrator
Ad_Infinitum
Data inscrierii: 23/Iun/2007
Mesaje: 212




Testele au fost efectuate intr-o retea locala, majoritatea calculatoarelor fiind Pentium III si Pentium IV, ruland sub Windows. Exista si un calculator Linux (server-ul de Internet). IP-urile sunt alocate static in domeniul 192.168.168.x.

Pentru testele descrise in acest produs a fost întrebuințat un Pentium III, cu memoria interna 256 Mo, cercul dur de 20 Go, frecventa de fapt de 1000 MHz, sistemul de operare Windows 2000 Professional, plus server-ul de Web Microsoft IIS, avand numele FORUM.

Programele au fost scrise in limbajul PHP, au fost stocate pe server in directorul TEST, fiind lansate in executie de pe indiferent ce alt calculator din retea, tastand urmatoarea adresa in Internet Explorer: http://forum/test/program.php

Fie urmatorul program PHP:

Citat:

<?ph
$timp1 = time();
$ip = $_SERVER['REMOTE_ADDR']; // adresa clientului
echo 'Adresa IP a clientului este '.$ip.'<br>';
echo 'Se presupune masca 255.255.255.0'.'<br>';
$lungime=strlen($ip);
if($lungime>0)
{
$pozitie = strrpos($ip,'.');
if ($pozitie === false)
{
// nu exista punct in adresa IP!
}
else
{
$retea=substr($ip,0,$pozitie);
echo 'Adresa de retea este '.$retea.'<br>';
$lim_inf = 1; // limita inferioara
$lim_sup = 254; // limita superioara
echo 'Se scaneaza intervalul ['.$retea.'.'.$lim_inf.', '.$retea.'.'.$lim_sup.']'.'<br>';
$gasite = 0;
for($indice=$lim_inf;$indice<=$lim_sup;$indice++)
{
$ip_temp = $retea.'.'.$indice;
$gazda=gethostbyaddr($ip_temp);
if($gazda!=$ip_temp)
{
echo 'Adresa IP este '.$ip_temp.', numele gazdei este '.$gazda.'<br>';
$gasite = $gasite + 1;
}
}
echo 'Au fost gasite '.$gasite.' calculatoare in functiune'.'<br>';
}
}
else
{
echo 'Adresa IP nula'.'<br>';
}
$timp2 = time();
$secunde = ($timp2 - $timp1);
echo 'A durat '.$secunde.' secunde'.'<br>';
$minute = round($secunde / 60);
echo 'Adica '.$minute.' minut(e)'.'<br>';
?>


Explicatiile sunt extrase din Manualul PHP (http://www.php.net/manual/en/).

$_SERVER este un masiv (tablou) asociativ care contine informatii diverse furnizate de server-ul Web. Nu exista nici o garantie ca fiecare server Web furnizeaza astfel de informatii. Server-ele Web pot omite unele din informatii, in timp ce vor furniza altele (necunoscute). Masivul $_SERVER este ,,superglobal'', adica o variabila globala in mod automat. NU este necesar ca variabila $_SERVER sa fie declarata ca fiind globala. Variabila $HTTP_SERVER_VARS contine aceleasi informatii, dar nu este globala in mod automat! Variabilele $_SERVER si $HTTP_SERVER_VARS sunt doua variabile diferite, chiar daca ambele contin aceleasi informatii.

Variabila $_SERVER['REMOTE_ADDR'] reprezinta adresa IP a clientului (de exemplu, 192.168.168.39). Presupunand masca de retea 255.255.255.0, rezulta ca adresa retelei va fi 192.168.168. Asta inseamna ca adresele IP ale calculatoarelor din reteaua locala se vor afla in intervalul [192.168.168.1, 192.168.168.254]. Au fost omise adresele 192.168.168.0 (reteaua in totalitatea ei, NETWORK) si 192.168.168.255 (toate calculatoarele din retea, BROADCAST).

Exemplu:

Citat:

$ip = $_SERVER['REMOTE_ADDR']; // adresa clientului


Functia predefinita GETHOSTBYADDR îngăduie aflarea numelui unui calculator pe baza adresei IP cunoscute. De exemplu, in reteaua de mai sus, adresei 192.168.168.40 ii corespunde numele FORUM, iar adresei 192.168.168.39 ii corespunde numele BRIO.

Exemplu:

Citat:

$gazda = gethostbyaddr($ip);


In caz de esec (gazda negasita), functia GETHOSTBYADDR returneaza IP-ul argument, in loc de numele gazdei.

Exemplu:

Citat:

if($gazda==$ip)
{
// esec
}


Recunosc ca sunt incepator in PHP. Am scris acest obiect ca un exemplu pentru ceilalti incepatori si ca un subiect de discutii (provocare) pentru cei avansati. Am doua intrebari:
1. de ce merge groaznic de incet?
2. cunoasteti alte functii PHP pentru inspectarea retelei?
Vezi profilul utilizatorului Trimite mesaj privat

PHP si functiile de retea PHP
 Pagina de start a forumului http://alpha-thema-online.uv.ro » Web development
Nu puteti crea un subiect nou in acest forum
Nu puteti raspunde in subiectele acestui forum
Nu puteti modifica mesajele proprii din acest forum
Nu puteti sterge mesajele proprii din acest forum
Nu puteti vota in chestionarele din acest forum
Ora este GMT + 3 ore  
Pagina 1 din 1  

  
  
 Creaza un subiect nou  Raspunde la subiect  


Fa-ti si tu propriul forum GRATUIT, pe www.myforum.ro
    Powered by phpBB © 2001-2004 phpBB Group. phpBB Skin by Vjacheslav Trushkin.