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


Posted in PHP onOctober 09, 2006

By Armel Fauveau  一木 译
    PHP能打开远程或本地主机上的Socket端口。本文是一个使用Socket的小例子:连接到一个Usenet新闻组服务器,同服务器对话,从新闻组中下载一些文章。

在php中打开一个socket
    使用fsockopen()打开一个socket.这个函数在php3和php4种都可以使用。函数声明是这样的:
    int fsockopen (string hostname, int port [, int errno [, string errstr [, double timeout]]])
    这个函数将打开一个连接到主机hostname的port端口的TCP连接。hostname可以是一个有效的域名,或者是一个ip地址。对于udp连接,你必须指定协议:udp://hostname. 对于unix域,主机名使用到socket的路径,这种情况下,端口port必须置为0。可选的timeout参数用来设定等待打开一个socket的时间,单位为秒。
    关于fsockopen()的更多信息,请参考:http://www.php.net/manual/function.fsockopen.php

网络新闻传输协议
    访问新闻组服务器需要通过称为NNTP(网络新闻传输协议)的协议来进行。这个协议在rfc977中有详细的细节,可以在http://www.w3.org/Protocols/rfc977/rfc977.html得到。这个文档分别描述了怎样连接到NNTP服务器,怎样同服务器对话,以及完成这些任务的不同命令。

连接
    连接到一个NNTP服务器需要知道它的主机名(或者是ip地址)和它侦听的端口。为了避免一个连接企图失败导致程序挂起,你应该使用timeout参数。
    <?php
      $cfgServer   = "your.news.host";
      $cfgPort     = 119;
      $cfgTimeOut  = 10;

      //open a socket
      if(!$cfgTimeOut)
         // without timeout
         $usenet_handle = fsockopen($cfgServer, $cfgPort);
      else
         // with timeout
         $usenet_handle = fsockopen($cfgServer, $cfgPort, &$errno, &$errstr, $cfgTimeOut);

      if(!$usenet_handle) {
          echo "Connection failed.\n";
          exit();
      }
      else {
          echo "Connected.\n";
          $tmp = fgets($usenet_handle, 1024);
      }

?> 

PHP 相关文章推荐
社区(php&amp;&amp;mysql)二
Oct 09 PHP
PHP 页面编码声明方法详解(header或meta)
Mar 12 PHP
phpMyAdmin 链接表的附加功能尚未激活问题的解决方法(已测)
Mar 27 PHP
深入PHP autoload机制的详解
Jun 09 PHP
php表单请求获得数据求和示例
May 15 PHP
php操作(删除,提取,增加)zip文件方法详解
Mar 12 PHP
CI框架中$this-&gt;load-&gt;library()用法分析
May 18 PHP
php使用imagecopymerge()函数创建半透明水印
Jan 25 PHP
php删除一个路径下的所有文件夹和文件的方法
Feb 07 PHP
PHP以json或xml格式返回请求数据的方法
May 31 PHP
Laravel框架模板加载,分配变量及简单路由功能示例
Jun 11 PHP
PHP+swoole+linux实现系统监控和性能优化操作示例
Apr 15 PHP
使用sockets:从新闻组中获取文章(三)
Oct 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
You might like
PHP MVC模式在网站架构中的实现分析
2010/03/04 PHP
mysql_num_rows VS COUNT 效率问题分析
2011/04/23 PHP
php使用百度天气接口示例
2014/04/22 PHP
SCP远程VPS快速搬家和WDCP升级php5.3安装memcached和eaccelerator教程
2017/07/27 PHP
PHP使用 Imagick 扩展实现图片合成,圆角处理功能示例
2019/09/09 PHP
腾讯与新浪的通过IP地址获取当前地理位置(省份)的接口
2010/07/26 Javascript
js列举css中所有图标的实现代码
2011/07/04 Javascript
js 代码优化点滴记录
2012/02/19 Javascript
JS实现可改变列宽的table实例
2013/07/02 Javascript
JavaScript改变HTML元素的样式改变CSS及元素属性
2013/11/12 Javascript
js格式化时间和js格式化时间戳示例
2014/02/10 Javascript
JavaScript中的this机制
2016/01/30 Javascript
Vue.js展示AJAX数据简单示例讲解
2017/03/29 Javascript
AngularJS 单选框及多选框的双向动态绑定
2017/04/20 Javascript
Vue的MVVM实现方法
2017/08/16 Javascript
理解Koa2中的async&amp;await的用法
2018/02/05 Javascript
Less 安装及基本用法
2018/05/05 Javascript
Vue.extend实现挂载到实例上的方法
2019/05/01 Javascript
layui动态渲染生成左侧3级菜单的方法(根据后台返回数据)
2019/09/23 Javascript
使用python实现正则匹配检索远端FTP目录下的文件
2015/03/25 Python
python正常时间和unix时间戳相互转换的方法
2015/04/23 Python
python通过getopt模块如何获取执行的命令参数详解
2017/12/29 Python
python爬虫获取淘宝天猫商品详细参数
2020/06/23 Python
浅谈Pandas 排序之后索引的问题
2018/06/07 Python
python2 与 python3 实现共存的方法
2018/07/12 Python
Django-Rest-Framework 权限管理源码浅析(小结)
2018/11/12 Python
PyTorch加载预训练模型实例(pretrained)
2020/01/17 Python
基于Tensorflow高阶读写教程
2020/02/10 Python
美国最好的保健品打折网店:Swanson
2017/08/04 全球购物
英文版银行求职信
2013/10/09 职场文书
学生干部培训方案
2014/06/12 职场文书
岗位职责范本大全
2015/02/26 职场文书
幼师辞职信范文大全
2015/05/12 职场文书
教务处干事工作总结
2015/08/14 职场文书
小学英语新课改心得体会
2016/01/22 职场文书
springboot+VUE实现登录注册
2021/05/27 Vue.js