使用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 Socket 编程
Apr 09 PHP
PHP 开发环境配置(Zend Server安装)
Apr 28 PHP
php fsockopen伪造post与get方法的详解
Jun 14 PHP
php 模拟post_验证页面的返回状态(实例讲解)
Oct 28 PHP
php打开远程文件的方法和风险及解决方法
Nov 12 PHP
PHP二维数组排序的3种方法和自定义函数分享
Apr 09 PHP
PHP header()函数常用方法总结
Apr 11 PHP
php url路由入门实例
Apr 23 PHP
PHP获取数组长度或某个值出现次数的方法
Feb 11 PHP
thinkphp的dump函数无输出实例代码
Nov 15 PHP
PHP页面跳转实现延时跳转的方法
Dec 10 PHP
PHP二维关联数组的遍历方式(实例讲解)
Oct 18 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中VC6、VC9、TS、NTS版本的区别与用法详解
2013/10/26 PHP
php中过滤非法字符的具体实现
2013/10/29 PHP
yum命令安装php7和相关扩展
2016/07/04 PHP
基于php判断客户端类型
2016/10/14 PHP
Laravel统一错误处理为JSON的方法介绍
2020/10/18 PHP
Js的MessageBox
2006/12/03 Javascript
JavaScript解析json格式数据简单示例
2014/12/09 Javascript
JavaScript正则表达式之multiline属性的应用
2015/06/16 Javascript
jQuery实现页面滚动时智能浮动定位
2017/01/08 Javascript
JavaScript实现滑动导航栏效果
2017/08/30 Javascript
JavaScript屏蔽Backspace键的实现代码
2017/11/02 Javascript
js使用xml数据载体实现城市省份二级联动效果
2017/11/08 Javascript
vue 录制视频并压缩视频文件的方法
2018/07/27 Javascript
浅谈layui 数据表格前后台传值的问题
2019/09/12 Javascript
JS内置对象和Math对象知识点详解
2020/04/03 Javascript
python的id()函数介绍
2013/02/10 Python
python合并文本文件示例
2014/02/07 Python
解决python3读取Python2存储的pickle文件问题
2018/10/25 Python
Python字符串逆序的实现方法【一题多解】
2019/02/18 Python
django多对多表的创建,级联删除及手动创建第三张表
2019/07/25 Python
python3 图片 4通道转成3通道 1通道转成3通道 图片压缩实例
2019/12/03 Python
Python计算IV值的示例讲解
2020/02/28 Python
用canvas实现图片滤镜效果附演示
2013/11/05 HTML / CSS
精油和天然健康美容产品:Art Naturals
2018/01/27 全球购物
曼城官方网上商店:Manchester City
2019/09/10 全球购物
数据库测试通常都包括哪些方面
2015/11/30 面试题
求职者应聘的自我评价
2013/10/16 职场文书
会计电算化专业个人的自我评价
2013/11/24 职场文书
青年创业培训欢迎词
2014/01/10 职场文书
新闻报道策划方案
2014/06/11 职场文书
党政领导班子群众路线对照检查材料思想汇报
2014/09/27 职场文书
导游词范文
2015/02/13 职场文书
严以用权学习心得体会
2016/01/12 职场文书
导游词之云南省玉龙雪山
2019/12/19 职场文书
【TED出品】天梯非主流开心游1700 划水骑士
2022/03/31 魔兽争霸
Android studio 简单计算器的编写
2022/05/20 Java/Android