使用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导出oracle库的php代码
Apr 20 PHP
支持中文和其他编码的php截取字符串函数分享(截取中文字符串)
Mar 13 PHP
php实现简单的语法高亮函数实例分析
Apr 27 PHP
PHP 数据结构队列(SplQueue)和优先队列(SplPriorityQueue)简单使用实例
May 12 PHP
php实现读取和写入tab分割的文件
Jun 01 PHP
ThinkPHP里用U方法调用js文件实例
Jun 18 PHP
微信支付PHP SDK之微信公众号支付代码详解
Dec 09 PHP
php  单例模式详细介绍及实现源码
Nov 05 PHP
PHP面向对象程序设计OOP继承用法入门示例
Dec 27 PHP
PHP无限极分类函数的实现方法详解
Apr 15 PHP
PHP实现文件下载【实例分享】
Apr 28 PHP
记录Yii2框架开发微信公众号遇到的问题及解决方法
Jul 20 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简单生成随机数的方法
2015/07/30 PHP
Yii2框架制作RESTful风格的API快速入门教程
2016/11/08 PHP
js中parseFloat(参数1,参数2)定义和用法及注意事项
2013/01/27 Javascript
JavaScript字符串插入、删除、替换函数使用示例
2013/07/25 Javascript
js 自动播放的实例代码
2013/11/19 Javascript
JS连连看源码完美注释版(推荐)
2013/12/09 Javascript
JavaScript使用循环和分割来替换和删除元素实例
2014/10/13 Javascript
Javascript动态创建div的方法
2015/02/09 Javascript
JS实现鼠标滑过链接改变网页背景颜色的方法
2015/10/20 Javascript
jQuery实现下拉菜单的实例代码
2017/06/19 jQuery
Vue的Flux框架之Vuex状态管理器
2017/07/30 Javascript
基于Vue实例对象的数据选项
2017/08/09 Javascript
微信小程序使用swiper组件实现层叠轮播图
2018/11/04 Javascript
在 Vue.js中优雅地使用全局事件的方法
2019/02/01 Javascript
深入了解query和params的使用区别
2019/06/24 Javascript
Layui事件监听的实现(表单和数据表格)
2019/10/17 Javascript
Javascript异步执行不按顺序解决方案
2020/04/30 Javascript
在vue中使用Base64转码的案例
2020/08/07 Javascript
关于element-ui表单中限制输入纯数字的解决方式
2020/09/08 Javascript
[01:32]2016国际邀请赛中国区预选赛IG战队首日赛后采访
2016/06/27 DOTA
[01:11]steam端dota2实名认证操作流程视频
2021/03/11 DOTA
Python中条件选择和循环语句使用方法介绍
2013/03/13 Python
在CentOS6上安装Python2.7的解决方法
2018/01/09 Python
python装饰器深入学习
2018/04/06 Python
python 文本单词提取和词频统计的实例
2018/12/22 Python
Python实现DDos攻击实例详解
2019/02/02 Python
Python os库常用操作代码汇总
2020/11/03 Python
AmazeUI的JS表单验证框架实战示例分享
2020/08/21 HTML / CSS
static关键字的用法
2013/10/07 面试题
Java工程师面试集锦之Spring框架
2013/06/16 面试题
比较一下entity bean和session bean
2013/12/27 面试题
毕业生应聘幼儿园的自荐信
2013/11/20 职场文书
大学运动会入场词
2014/02/22 职场文书
公司保密管理制度
2015/08/04 职场文书
小学中队委竞选稿
2015/11/20 职场文书
初中班主任心得体会
2016/01/07 职场文书