PHP ile bir TCP istemcisi yazalim

'HTML-PHP-ASP-JAVA' forumunda Mavi_Sema tarafından 15 Mayıs 2009 tarihinde açılan konu

  1. Mavi_Sema

    Mavi_Sema Özel Üye

    Sponsorlu Bağlantılar
    PHP ile bir TCP istemcisi yazalim konusu Problem : Uzaktaki makineye soket acarak baglanmak istiyorsunuz.



    Cozum: TCP ile uzaktaki bir makineye baglanmak icin fsockopen () hazir fonksiyonu kullanilir.


    Not: Baska bir sunucuya izin almadan soket acarak baglanmak istemedigim icin php.org.tr'in egitim sunucusunu kullaniyorum.(turk-php.com virtual host uzerinde oldugu icin istedigim sonucu alamiyorum…)






    <?php


    $baglanti = fsockopen("www.php.org.tr", 80, $errno, $errstr, 30);


    if (!$baglanti) {
    die($errstr);
    }


    fputs($baglanti, "GET / /HTTP/1.0 \r\n\r\n");
    while (!feof($baglanti)) {
    $satir = fgets($baglanti, 2048);
    echo $satir;
    }
    fclose ($baglanti);
    ?>




    Bir diger cozum ise PHP'nin soket kutuphanesini kullanmaktir.(PHP icerisinden bu modulu kullanabilmek icin configure betigi --enable-sockets parametresi ile calistirilmalidir.)


    <?php
    $url = 'www.php.org.tr';


    $serv_port = getservbyname('www', 'tcp');
    $adres = gethostbyname($url);


    $sock = socket (AF_INET, SOCK_STREAM, 0);
    if ($sock < 0) {
    die(strerror($sock));
    }


    $res = connect($sock, $adres, $serv_port);
    if ($res < 0) {
    die(strerror($res));
    }


    $veri = "HEAD / HTTP/1.0 \r\n\r\n";


    write ($sock, $veri, strlen($veri));


    while (read($sock, $cevap, 2048)) {
    print $cevap;
    }


    close ($sock);
    ?>


    Her iki programda ayni islevi gormektedir.Ilk programda fsockopen () hazir fonksiyonu yardimiyla sokete baglanmak icin bir arayuz olustrulmustur.


    Ikinci programda, programciya daha fazla kontrol sunan soket modulu kullanilmistir.Bu kutuphane ile daha dusuk seviyeli C API'lerine direkt erisim saglanmaktadir.
     

Bu Sayfayı Paylaş