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


Posted in PHP onOctober 09, 2006

读取文章
    既然我们已经得到了最后一篇文章的文章编号,读取最后的十篇文章就是很容易的事了。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 相关文章推荐
PHP脚本的10个技巧(6)
Oct 09 PHP
PHP调用Twitter的RSS的实现代码
Mar 10 PHP
linux iconv方法的使用
Oct 01 PHP
PHP管理内存函数 memory_get_usage()使用介绍
Sep 23 PHP
解析yahoo邮件用phpmailer发送的实例
Jun 24 PHP
如何在Ubuntu下启动Apache的Rewrite功能
Jul 05 PHP
模板引擎smarty工作原理以及使用示例
May 25 PHP
php递归法读取目录及文件的方法
Jan 30 PHP
php编程每天必学之表单验证
Mar 01 PHP
PHP使用stream_context_create()模拟POST/GET请求的方法
Apr 02 PHP
PHP 接入微信扫码支付总结(总结篇)
Nov 03 PHP
PHP中call_user_func_array回调函数的用法示例
Nov 26 PHP
PHP+MYSQL的文章管理系统(二)
Oct 09 #PHP
使用sockets:从新闻组中获取文章(二)
Oct 09 #PHP
通过ODBC连接的SQL SERVER实例
Oct 09 #PHP
如何对PHP程序中的常见漏洞进行攻击(下)
Oct 09 #PHP
模拟OICQ的实现思路和核心程序(三)
Oct 09 #PHP
模拟OICQ的实现思路和核心程序(一)
Oct 09 #PHP
PHP自动更新新闻DIY
Oct 09 #PHP
You might like
PHP 接入支付宝即时到账功能
2016/09/18 PHP
点图片上一页下一页翻页效果
2008/07/09 Javascript
JS继承 笔记
2011/07/13 Javascript
JavaScript实现为指定对象添加多个事件处理程序的方法
2015/04/17 Javascript
《JavaScript高级编程》学习笔记之object和array引用类型
2015/11/01 Javascript
JavaScript DOM 学习总结(五)
2015/11/24 Javascript
JavaScript中transform实现数字翻页效果
2017/03/08 Javascript
javascript简写常用的12个技巧(可以大大减少你的js代码量)
2020/03/28 Javascript
react router4+redux实现路由权限控制的方法
2018/05/03 Javascript
vue后台管理之动态加载路由的方法
2018/08/13 Javascript
Vue匿名插槽与作用域插槽的合并和覆盖行为
2019/04/22 Javascript
详解vue-cli中使用rem,vue自适应
2019/05/06 Javascript
jquery实现垂直手风琴导航栏
2020/02/18 jQuery
javascript开发实现贪吃蛇游戏
2020/07/31 Javascript
js+canvas实现图片格式webp/png/jpeg在线转换
2020/08/22 Javascript
js实现日历
2020/11/07 Javascript
[01:59]翻天覆地,因你而变,7.20版本地图更新速览
2018/11/24 DOTA
python使用nntp读取新闻组内容的方法
2015/05/08 Python
Python文件夹与文件的相关操作(推荐)
2016/07/25 Python
python制作企业邮箱的爆破脚本
2016/10/05 Python
python妙用之编码的转换详解
2017/04/21 Python
python 中文件输入输出及os模块对文件系统的操作方法
2018/08/27 Python
OpenCV+Python--RGB转HSI的实现
2019/11/27 Python
通过实例简单了解Python中yield的作用
2019/12/11 Python
jupyter notebook 添加kernel permission denied的操作
2020/04/21 Python
python上selenium的弹框操作实现
2020/07/13 Python
Python 使用双重循环打印图形菱形操作
2020/08/09 Python
python3实现简单飞机大战
2020/11/29 Python
CSS3属性background-size使用指南
2014/12/09 HTML / CSS
代领毕业证委托书
2014/08/02 职场文书
首都博物馆观后感
2015/06/05 职场文书
预备党员的思想汇报,你真的会写吗?
2019/06/28 职场文书
2019入党申请书范文3篇
2019/08/21 职场文书
python3 删除所有自定义变量的操作
2021/04/08 Python
Python+Selenium自动化环境搭建与操作基础详解
2022/03/13 Python
Android Flutter实现3D动画效果示例详解
2022/04/07 Java/Android