使用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 数组的指针操作实现代码
Feb 08 PHP
ThinkPHP采用模块和操作分析
Apr 18 PHP
PHP学习笔记 IIS7下安装配置php环境
Oct 29 PHP
解析Ubuntu下crontab命令的用法
Jun 24 PHP
PHP中常用的数组操作方法笔记整理
May 16 PHP
php使用parse_str实现查询字符串解析到变量中的方法
Feb 17 PHP
php实现获取农历(阴历)、节日、节气的类与用法示例
Nov 20 PHP
详解Yaf框架PHPUnit集成测试方法
Dec 27 PHP
thinkPHP5框架auth权限控制类与用法示例
Jun 12 PHP
centos7上编译安装php7以php-fpm方式连接apache
Nov 08 PHP
php 处理png图片白色背景色改为透明色的实例代码
Dec 10 PHP
Laravel框架Blade模板简介及模板继承用法分析
Dec 03 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怎样调用MSSQL的存储过程
2006/10/09 PHP
php判断访问IP的方法
2015/06/19 PHP
PHP+Apache+Mysql环境搭建教程
2016/08/01 PHP
php 魔术常量详解及实例代码
2016/12/04 PHP
PHP常用的三种设计模式
2017/02/17 PHP
IOS 开发之NSDictionary转换成JSON字符串
2017/08/14 PHP
PHP设计模式之适配器模式原理与用法分析
2018/04/25 PHP
PHP levenshtein()函数用法讲解
2019/03/08 PHP
ExtJs使用IFrame的实现代码
2010/03/24 Javascript
给jqGrid数据行添加修改和删除操作链接(之一)
2011/11/04 Javascript
JS如何将UTC格式时间转本地格式
2013/09/04 Javascript
巧用replace将文字表情替换为图片
2014/04/17 Javascript
js简单实现标签云效果实例
2015/08/06 Javascript
js绑定事件和解绑事件
2017/04/27 Javascript
react开发中如何使用require.ensure加载es6风格的组件
2017/05/09 Javascript
基于代数方程库Algebra.js解二元一次方程功能示例
2017/06/09 Javascript
JavaScript之RegExp_动力节点Java学院整理
2017/06/29 Javascript
微信小程序模板和模块化用法实例分析
2017/11/28 Javascript
解决Vue 项目打包后favicon无法正常显示的问题
2018/09/01 Javascript
使用koa2创建web项目的方法步骤
2019/03/12 Javascript
vue 页面回退mounted函数不执行的解决方案
2020/07/26 Javascript
python 不关闭控制台的实现方法
2011/10/23 Python
Python检查 云备份进程是否正常运行代码实例
2019/08/22 Python
django使用xadmin的全局配置详解
2019/11/15 Python
python中用Scrapy实现定时爬虫的实例讲解
2021/01/18 Python
实例教程 纯CSS3打造非常炫的加载动画效果
2014/11/05 HTML / CSS
html5设计原理(推荐收藏)
2014/05/17 HTML / CSS
html5桌面通知(Web Notifications)实例解析
2014/07/07 HTML / CSS
HTML5对比HTML4的主要改变和改进总结
2016/05/27 HTML / CSS
苹果中国官方网站:Apple中国
2016/07/22 全球购物
澳大利亚婴儿喂养品牌:Cherub Baby
2018/11/01 全球购物
入党综合考察材料
2014/06/02 职场文书
大学生学期个人总结
2015/02/12 职场文书
2016五一手机促销广告语
2016/01/28 职场文书
个人工作失误的保证书怎么写?
2019/06/21 职场文书
Python爬虫爬取全球疫情数据并存储到mysql数据库的步骤
2021/03/29 Python