使用sockets:从新闻组中获取文章(三)_php基础

读取文章
    既然我们已经得到了最后一篇文章的文章编号,读取最后的十篇文章就是很容易的事了。RFC977中说,ARTICLE命令既可以使用文章编号,也可以使用它的消息ID.
    这里要注意,文章编号跟它的消息ID是不同的,因为每个新闻服务器分配自己的文章编号,所以同一篇文章在两个不同的服务器上的编号是不一样的,而文章的消息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++;
  }

  ?>

    我们从服务器的这个新闻组中读取了最后的十篇文章,。也可以通过使用HEAD命令读取文章的头信息,或者使用BODY命令读取文章内容。

关闭连接
    最后,通过调用fclose()函数关闭socket,结束同NNTP服务器的对话。

    <?php
      //close connection
      fclose($usenet_handle);
    ?>
    关于fclose()的更多信息,请参考 http://www.php.net/manual/function.fclose.php

结论
    在上文中,我们看到了怎样打开、使用然后关闭一个socket:连接到一个NNTP服务器,取回一些文章。使用POST命令发表文章也复杂不到哪儿去。
    下一步就是编写一个基于WEB的新闻组客户端了。
    存储这些文章,用某个搜索引擎(比如说http://www.htdig.org)对文章进行索引也是非常容易的。这样,你有了一个基于web的搜索新闻组的程序了。
    这样的程序的一个例子可以在http://www.phpindex.com/ng/得到。 

时间: 2024-10-24 02:13:36

使用sockets:从新闻组中获取文章(三)_php基础的相关文章

使用sockets:从新闻组中获取文章(三)

读取文章     既然我们已经得到了最后一篇文章的文章编号,读取最后的十篇文章就是很容易的事了.RFC977中说,ARTICLE命令既可以使用文章编号,也可以使用它的消息ID.     这里要注意,文章编号跟它的消息ID是不同的,因为每个新闻服务器分配自己的文章编号,所以同一篇文章在两个不同的服务器上的编号是不一样的,而文章的消息ID,是包括在文章的头信息里,并且是唯一的.         <?php      $cfgLimit =10;      //upload last articles

在php中使用sockets:从新闻组中获取文章

PHP能打开远程或本地主机上的Socket端口.本文是一个使用Socket的小例子:连接到一个Usenet新闻组服务器,同服务器对话,从新闻组中下载一些文章. 在php中打开一个socket使用fsockopen()打开一个socket.这个函数在php3和php4种都可以使用.函数声明是这样的: int fsockopen (string hostname, int port _[, int errno [, string errstr [, double timeout]]]) 这个函数将打

使用sockets:从新闻组中获取文章(一)

By Armel Fauveau  一木 译     PHP能打开远程或本地主机上的Socket端口.本文是一个使用Socket的小例子:连接到一个Usenet新闻组服务器,同服务器对话,从新闻组中下载一些文章.      在php中打开一个socket     使用fsockopen()打开一个socket.这个函数在php3和php4种都可以使用.函数声明是这样的:     int fsockopen (string hostname, int port [, int errno [, st

使用sockets:从新闻组中获取文章(一)_php基础

By Armel Fauveau  一木 译     PHP能打开远程或本地主机上的Socket端口.本文是一个使用Socket的小例子:连接到一个Usenet新闻组服务器,同服务器对话,从新闻组中下载一些文章. 在php中打开一个socket     使用fsockopen()打开一个socket.这个函数在php3和php4种都可以使用.函数声明是这样的:     int fsockopen (string hostname, int port [, int errno [, string

使用sockets:从新闻组中获取文章(二)

与服务器对话 现在我们已经连接到了服务器,可以通过前面打开的socket同服务器对话了.比如说我们要从某个新闻组得到最近的10篇文章.RFC977指出,第一步要用GROUP命令选择正确的新闻组:     GROUP ggg     参数ggg是要选择的新闻组的名字(比如说是"net.news"),这是必需的.可用的新闻组的列表可以用LIST命令得到.选择新闻组的命令成功后,返回组中第一篇和最后一篇文章的文章编号,以及组中文章的数目.     下面是一个例子:     chrome:~$

使用sockets:从新闻组中获取文章(二)_php基础

与服务器对话 现在我们已经连接到了服务器,可以通过前面打开的socket同服务器对话了.比如说我们要从某个新闻组得到最近的10篇文章.RFC977指出,第一步要用GROUP命令选择正确的新闻组:     GROUP ggg     参数ggg是要选择的新闻组的名字(比如说是"net.news"),这是必需的.可用的新闻组的列表可以用LIST命令得到.选择新闻组的命令成功后,返回组中第一篇和最后一篇文章的文章编号,以及组中文章的数目.     下面是一个例子:     chrome:~$

在 php 中使用 sockets:从新闻组中获取文章

PHP能打开远程或本地主机上的Socket端口.本文是一个使用Socket的小例子:连 接到一个Usenet新闻组服务器,同服务器对话,从新闻组中下载一些文章. 在php中打开一个socket 使用fsockopen()打开一个socket.这个函数在php3和php4种都可以使用.函数声明 是这样的: int fsockopen (string hostname, int port [, int errno [, string errstr [, double timeout]]]) 这个函数

在php中使用sockets:从新闻组中获取文章

PHP能打开远程或本地主机上的Socket端口.本文是一个使用Socket的小例子:连 接到一个Usenet新闻组服务器,同服务器对话,从新闻组中下载一些文章.在php中打开一个socket 使用fsockopen()打开一个socket.这个函数在php3和php4种都可以使用.函数声明 是这样的: int fsockopen (string hostname, int port [, int errno [, string errstr [, double timeout]]]) 这个函数将

在PHP中使用Sockets 从Usenet中获取文件_php技巧

作者:Armel Fauveau  原文地址:http://www.phpbuilder.net/columns/armel20010427.php3 PHP能够打开远程或者本地服务器的sockets!这里是一个使用socket的简单的例子:连接到Usenet的新闻服务器,与服务器沟通,并从一个精确的新闻分组中下载一些文章. 使用PHP打开Socket 使用fsockopen()来打开一个Socket.这个函数在PHP3和PHP4中都存在.函数的原型如下: <?php intfsockopen