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


Posted in PHP onOctober 09, 2006

与服务器对话

现在我们已经连接到了服务器,可以通过前面打开的socket同服务器对话了。比如说我们要从某个新闻组得到最近的10篇文章。RFC977指出,第一步要用GROUP命令选择正确的新闻组:
    GROUP ggg
    参数ggg是要选择的新闻组的名字(比如说是"net.news"),这是必需的。可用的新闻组的列表可以用LIST命令得到。选择新闻组的命令成功后,返回组中第一篇和最后一篇文章的文章编号,以及组中文章的数目。
    下面是一个例子:
    chrome:~$ telnet my.news.host 119
    Trying aa.bb.cc.dd...
    Connected to my.news.host.
    Escape character is '^]'.
    200 my.news.host InterNetNews NNRP server INN 2.2.2 13-Dec-1999 ready (posting ok).
    GROUP alt.test
    211 232 222996 223235 alt.test
    quit
    205 .

    接收到命令 GROUP alt.test 后,服务器返回"211 232 222996 223235 alt.test". 211是RFC中定义的返回码,指示命令已成功执行。返回信息还指出,现在有232篇文章,最早的文章的编号是222996,最新的文章的编号是223235。我们看到,222996+232并不等于223235。丢失的7篇文章因为某种原因被从服务器删除了,可能是因为被它的合法作者取消了(这是可能的,而且很容易做到),或者因为是灌水文章而被删。
    需要注意的事,有些服务器在选择新闻组之前可能要求身份认证,这取决于这是一个公共的或者是私用的服务器。也有可能服务器允许任何人读取文章,但发表文章需要身份验证。

    <?php

      //$cfgUser    = "xxxxxx";
      //$cfgPasswd  = "yyyyyy";
      $cfgNewsGroup = "alt.php";

      //identification required on private server
      if($cfgUser) {
          fputs($usenet_handle, "AUTHINFO USER ".$cfgUser."n");
          $tmp = fgets($usenet_handle, 1024);
          fputs($usenet_handle, "AUTHINFO PASS ".$cfgPasswd."n");
          $tmp = fgets($usenet_handle, 1024);

          //check error

          if($tmp != "281 Okrn") {
              echo "502 Authentication errorn";
              exit();
          }
  }

  //select newsgroup

  fput($usenet_handle, "GROUP ".$cfgNewsGroup."n");
  $tmp = fgets($usenet_handle, 1024);

  if($tmp == "480 Authentication required for commandrn") {
     echo $tmp;
     exit();
  }

  $info = split(" ", $tmp);
  $first= $info[2];
  $last = $info[3];

  printf("First : %sn", $first);
  printf("Last : %lastn", $last);

?> 

PHP 相关文章推荐
用PHP实现登陆验证码(类似条行码状)
Oct 09 PHP
如何做到多笔资料的同步
Oct 09 PHP
php 分页类 扩展代码
Jun 11 PHP
PHP缓存技术的使用说明
Aug 06 PHP
PHP表单递交控件名称含有点号(.)会被转化为下划线(_)的处理方法
Jan 06 PHP
php中设置index.php文件为只读的方法
Feb 06 PHP
php利用腾讯ip分享计划获取地理位置示例分享
Jan 20 PHP
php发送get、post请求的6种方法简明总结
Jul 08 PHP
ThinkPHP基本的增删查改操作实例教程
Aug 22 PHP
Yii2数据库操作常用方法小结
May 04 PHP
PHP 7安装使用体验之性能大提升,兼容性强,扩展支持不够(升级PHP要谨慎)
Jul 27 PHP
完美的php分页类
Oct 24 PHP
通过ODBC连接的SQL SERVER实例
Oct 09 #PHP
如何对PHP程序中的常见漏洞进行攻击(下)
Oct 09 #PHP
模拟OICQ的实现思路和核心程序(三)
Oct 09 #PHP
模拟OICQ的实现思路和核心程序(一)
Oct 09 #PHP
PHP自动更新新闻DIY
Oct 09 #PHP
模拟OICQ的实现思路和核心程序(二)
Oct 09 #PHP
层叠菜单的动态生成
Oct 09 #PHP
You might like
php中防止伪造跨站请求的小招式
2011/09/02 PHP
PHP中session跨子域的三种实现方法
2016/07/25 PHP
PHP下载文件函数与用法示例
2019/09/27 PHP
js 针对html DOM元素操作等经验累积
2014/03/11 Javascript
angularJS提交表单(form)
2015/02/09 Javascript
jQuery+css3动画属性制作猎豹浏览器宽屏banner焦点图
2015/03/16 Javascript
js控制元素显示在屏幕固定位置及监听屏幕高度变化的方法
2015/08/11 Javascript
JS实现点击事件统计的简单实例
2016/07/10 Javascript
$.browser.msie 为空或不是对象问题的多种解决方法
2017/03/19 Javascript
jQuery Ajax向服务端传递数组参数值的实例代码
2017/09/03 jQuery
vue项目base64字符串转图片的实现代码
2018/07/13 Javascript
Javascript查看大图功能代码实现
2020/05/07 Javascript
详解Python中映射类型的内建函数和工厂函数
2015/08/19 Python
python实现简易通讯录修改版
2018/03/13 Python
python方法生成txt标签文件的实例代码
2018/05/10 Python
Python列表生成式与生成器操作示例
2018/08/01 Python
Python中Proxypool库的安装与配置
2018/10/19 Python
python调用自定义函数的实例操作
2019/06/26 Python
使用Python构造hive insert语句说明
2020/06/06 Python
使用python求斐波那契数列中第n个数的值示例代码
2020/07/26 Python
css3的transform造成z-index无效解决方案
2014/12/04 HTML / CSS
Ajax实现页面无刷新留言效果
2021/03/24 Javascript
水利公司纪检监察自我鉴定
2014/02/25 职场文书
项目合作协议书
2014/04/16 职场文书
硕士研究生就业推荐信
2014/05/18 职场文书
党委书记群众路线对照检查材料思想汇报
2014/10/04 职场文书
防灾减灾标语
2014/10/07 职场文书
商铺租房协议书范本
2014/12/04 职场文书
2015年财务科工作总结范文
2015/05/13 职场文书
怎样写家长意见
2015/06/04 职场文书
法律讲堂观后感
2015/06/11 职场文书
银行安全保卫工作总结
2015/08/10 职场文书
聘任书格式及范文
2015/09/21 职场文书
浅谈pytorch中stack和cat的及to_tensor的坑
2021/05/20 Python
HTML5基础学习之文本标签控制
2022/03/25 HTML / CSS
Win11无法安装更新补丁KB3045316怎么办 附KB3045316补丁修复教程
2022/08/14 数码科技