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

5年以前  |  阅读数:852 次  |  编程语言: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/得到。

 相关文章:
PHP分页显示制作详细讲解
SSH 登录失败:Host key verification failed
获取IMSI
将二进制数据转为16进制以便显示
获取IMEI
文件下载
贪吃蛇
双位运算符
PHP自定义函数获取搜索引擎来源关键字的方法
Java生成UUID
发送邮件
年的日历图
提取后缀名
在Zeus Web Server中安装PHP语言支持
让你成为最历害的git提交人
Yii2汉字转拼音类的实例代码
再谈PHP中单双引号的区别详解
指定应用ID以获取对应的应用名称
Python 2与Python 3版本和编码的对比
php封装的page分页类完整实例