使用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中函数的形参与实参的问题说明
Sep 01 PHP
PHP第一季视频教程(李炎恢+php100 不断更新)
May 29 PHP
深入PHP获取随机数字和字母的方法详解
Jun 06 PHP
PHP修改session_id示例代码
Jan 08 PHP
ThinkPHP验证码和分页实例教程
Aug 22 PHP
PHP获取不了React Native Fecth参数的解决办法
Aug 26 PHP
PHP实现更改hosts文件的方法示例
Aug 08 PHP
php读取本地json文件的实例
Mar 07 PHP
php empty 函数判断结果为空但实际值却为非空的原因解析
May 28 PHP
Thinkphp5框架实现获取数据库数据到视图的方法
Aug 14 PHP
PHP pthreads v3使用中的一些坑和注意点分析
Feb 21 PHP
让你的PHP,APACHE,NGINX支持大文件上传
Mar 09 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 curl模拟post提交数据示例
2013/12/31 PHP
php写入数据到CSV文件的方法
2015/03/14 PHP
PHP错误提示It is not safe to rely on the system……的解决方法
2019/03/25 PHP
基于jQuery的自动完成插件
2011/02/03 Javascript
jQuery cdn使用介绍
2013/05/08 Javascript
javascript预加载图片、css、js的方法示例介绍
2013/10/14 Javascript
javascript的document.referrer浏览器支持、失效情况总结
2014/07/18 Javascript
jquery使用经验小结
2015/05/20 Javascript
纯js实现无限空间大小的本地存储
2015/06/18 Javascript
javascript中Array()数组函数详解
2015/08/23 Javascript
Jquery中request和request.form和request.querystring的区别
2015/11/26 Javascript
jQuery中通过ajax的get()函数读取页面的方法
2016/02/29 Javascript
BootStrap智能表单实战系列(七)验证的支持
2016/06/13 Javascript
简单模拟node.js中require的加载机制
2016/10/27 Javascript
elementUI Vue 单个按钮显示和隐藏的变换功能(两种方法)
2018/09/04 Javascript
vue实现滑动到底部加载更多效果
2020/10/27 Javascript
[04:11]DOTA2亚洲邀请赛小组赛第一日 TOP10精彩集锦
2015/01/30 DOTA
[02:43]2018DOTA2亚洲邀请赛主赛事首日TOP5
2018/04/04 DOTA
python如何对实例属性进行类型检查
2018/03/20 Python
对python中的six.moves模块的下载函数urlretrieve详解
2018/12/19 Python
python抓取需要扫微信登陆页面
2019/04/29 Python
使用python实现unix2dos和dos2unix命令的例子
2019/08/13 Python
python输出带颜色字体实例方法
2019/09/01 Python
Python如何基于rsa模块实现非对称加密与解密
2020/01/03 Python
windows上彻底删除jupyter notebook的实现
2020/04/13 Python
Python selenium爬虫实现定时任务过程解析
2020/06/08 Python
python 匿名函数与三元运算学习笔记
2020/10/23 Python
Django model class Meta原理解析
2020/11/14 Python
matplotlib运行时配置(Runtime Configuration,rc)参数rcParams解析
2021/01/05 Python
html5写一个BUI折叠菜单插件的实现方法
2019/09/11 HTML / CSS
北卡罗来纳州豪华家具和家居装饰店:Carolina Rustica
2018/10/30 全球购物
锐步香港官方网上商店:Reebok香港
2020/11/05 全球购物
PHP如何与mysql建立链接
2013/05/05 面试题
测绘工程专业个人自我评价
2013/12/01 职场文书
婚前协议书
2014/04/15 职场文书
小学教师个人总结
2015/02/05 职场文书