明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

使用sockets:從新聞組中取得文章(3)

[摘要]讀取文章 既然我們已經(jīng)得到了最后一篇文章的文章編號(hào),讀取最后的十篇文章就是很容易的事了。RFC977中說,ARTICLE命令既可以使用文章編號(hào),也可以使用它的消息ID. 這里要注意,文章編號(hào)跟它的消息ID是不同的,因?yàn)槊總(gè)新聞服務(wù)器分配自己的文章編號(hào),所以同一篇文章在兩個(gè)不同的服務(wù)...
讀取文章
    既然我們已經(jīng)得到了最后一篇文章的文章編號(hào),讀取最后的十篇文章就是很容易的事了。RFC977中說,ARTICLE命令既可以使用文章編號(hào),也可以使用它的消息ID.
    這里要注意,文章編號(hào)跟它的消息ID是不同的,因?yàn)槊總(gè)新聞服務(wù)器分配自己的文章編號(hào),所以同一篇文章在兩個(gè)不同的服務(wù)器上的編號(hào)是不一樣的,而文章的消息ID,是包括在文章的頭信息里,并且是唯一的。
     
   <?php
     $cfgLimit =10;

     //upload last articles
   
     $boucle = $last-$cfgLimit;
   
     while ($boucle<=$last) {
       set_time_limit(0);
       fputs($usenet_handle, "ARTICLE $bouclen");

       $article="";
       $tmp=fgets($usenet_handle, 4069);
       if(substr($tmp,0,3) != "220") {
           echo "+----------------------+n";
           echo "Error on article $bouclen";
           echo "+----------------------+n";
       }
       else {
           while($tmp!=".rn") {
              $tmp = fgets($usenet_handle, 4096);
              $article .=$tmp;
           }
            
           echo "+----------------------+n";
           echo "Article $bouclen";
           echo "+----------------------+n";
           echo "$articlen";
       }
        
       $boucle++;
  }
   
  ?>

    我們從服務(wù)器的這個(gè)新聞組中讀取了最后的十篇文章,。也可以通過使用HEAD命令讀取文章的頭信息,或者使用BODY命令讀取文章內(nèi)容。

關(guān)閉連接
    最后,通過調(diào)用fclose()函數(shù)關(guān)閉socket,結(jié)束同NNTP服務(wù)器的對(duì)話。
    
    <?php
      //close connection
      fclose($usenet_handle);
    ?>
    關(guān)于fclose()的更多信息,請(qǐng)參考 http://www.php.net/manual/function.fclose.php

結(jié)論
    在上文中,我們看到了怎樣打開、使用然后關(guān)閉一個(gè)socket:連接到一個(gè)NNTP服務(wù)器,取回一些文章。使用POST命令發(fā)表文章也復(fù)雜不到哪兒去。
    下一步就是編寫一個(gè)基于WEB的新聞組客戶端了。
    存儲(chǔ)這些文章,用某個(gè)搜索引擎(比如說http://www.htdig.org)對(duì)文章進(jìn)行索引也是非常容易的。這樣,你有了一個(gè)基于web的搜索新聞組的程序了。
    這樣的程序的一個(gè)例子可以在http://www.phpindex.com/ng/得到。