使用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 在线打包_支持子目录
Jun 28 PHP
php 正则匹配函数体
Aug 25 PHP
php中处理mysql_fetch_assoc返回来的数组 不用foreach----echo
May 04 PHP
解析linux下安装memcacheq(mcq)全过程笔记
Jun 27 PHP
destoon利用Rewrite规则设置网站安全
Jun 21 PHP
PHP限制HTML内容中图片必须是本站的方法
Jun 16 PHP
Yii2中OAuth扩展及QQ互联登录实现方法
May 16 PHP
thinkphp中多表查询中防止数据重复的sql语句(必看)
Sep 22 PHP
PHP中overload与override的区别
Feb 13 PHP
phpcms实现验证码替换及phpcms实现全站搜索功能教程详解
Dec 13 PHP
laravel添加前台跳转成功页面示例
Oct 22 PHP
MacOS下PHP7.1升级到PHP7.4.15的方法
Feb 22 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 去除html标记--strip_tags与htmlspecialchars的区别详解
2013/06/26 PHP
PHP错误Allowed memory size of 67108864 bytes exhausted的3种解决办法
2014/07/28 PHP
WAMP环境中扩展oracle函数库(oci)
2015/06/26 PHP
Laravel框架在本地虚拟机快速安装的方法详解
2018/06/11 PHP
利用javascript移动div层-javascript 拖动层
2009/03/22 Javascript
多个datatable共存造成多个表格的checkbox都被选中
2013/07/11 Javascript
JS中Date日期函数中的参数使用介绍
2014/01/02 Javascript
javascript中Math.random()使用详解
2015/04/15 Javascript
全面解析Bootstrap图片轮播效果
2015/12/03 Javascript
学做Bootstrap的第一个页面
2016/05/15 HTML / CSS
详解Javascript中prototype属性(推荐)
2016/09/03 Javascript
利用JS提交表单的几种方法和验证(必看篇)
2016/09/17 Javascript
jQuery 全选 全不选 事件绑定的实现代码
2017/01/23 Javascript
iOS + node.js使用Socket.IO框架进行实时通信示例
2017/04/14 Javascript
php简单数据库操作类的封装
2017/06/08 Javascript
JS实现下拉菜单列表与登录注册弹窗效果
2017/08/10 Javascript
解决layui页面按钮点击无反应,也不报错的问题
2019/09/29 Javascript
JavaScript实现滑动门效果
2020/01/18 Javascript
利用python画一颗心的方法示例
2017/01/31 Python
Python基于回溯法子集树模板解决最佳作业调度问题示例
2017/09/08 Python
python3 判断列表是一个空列表的方法
2018/05/04 Python
通过python的matplotlib包将Tensorflow数据进行可视化的方法
2019/01/09 Python
python实现Virginia无密钥解密
2019/03/20 Python
Python 3.8 新功能大揭秘【新手必学】
2020/02/05 Python
python判断变量是否为int、字符串、列表、元组、字典的方法详解
2020/02/13 Python
Python 实现键盘鼠标按键模拟
2020/11/18 Python
selenium+python实现基本自动化测试的示例代码
2021/01/27 Python
Foot Locker德国官方网站:美国运动服和鞋类零售商
2018/11/01 全球购物
运行时异常与一般异常有何异同?
2014/01/05 面试题
农救科工作职责
2013/11/27 职场文书
ktv总经理岗位职责
2014/02/17 职场文书
家长给学校的建议书
2014/05/15 职场文书
实验室标语
2014/06/21 职场文书
2014年防汛工作总结
2014/12/08 职场文书
先进个人自荐书
2015/03/06 职场文书
分布式Redis Cluster集群搭建与Redis基本用法
2022/02/24 Redis