使用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 相关文章推荐
example2.php
Oct 09 PHP
PHP中的加密功能
Oct 09 PHP
十天学会php之第二天
Oct 09 PHP
新闻分类录入、显示系统
Oct 09 PHP
用 PHP5 轻松解析 XML
Dec 04 PHP
最新用php获取谷歌PR值算法,附上php查询PR值代码示例
Dec 25 PHP
PHP获取文件夹内文件数的方法
Mar 12 PHP
PHP编译安装时常见错误解决办法
May 28 PHP
PHP使用mkdir创建多级目录的方法
Dec 22 PHP
PHP基本语法实例总结
Sep 09 PHP
Thinkphp结合AJAX长轮询实现PC与APP推送详解
Jul 31 PHP
thinkphp5框架调用其它控制器方法 实现自定义跳转界面功能示例
Jul 03 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
关于crontab的使用详解
2013/06/24 PHP
jQuery的实现原理的模拟代码 -4 重要的扩展函数 extend
2010/08/03 Javascript
JS脚本defer的作用示例介绍
2014/01/02 Javascript
简单的JavaScript互斥锁分享
2014/02/02 Javascript
javascript制作幻灯片(360度全景图片)
2015/07/28 Javascript
jQuery 判断图片是否加载完成方法汇总
2015/08/10 Javascript
基于javascript实现彩票随机数生成(简单版)
2020/04/17 Javascript
jQuery获取浏览器类型和版本号的方法
2016/07/05 Javascript
JavaScript和jQuery获取input框的绝对位置实现方法
2016/10/13 Javascript
利用CSS、JavaScript及Ajax实现图片预加载的方法
2016/11/29 Javascript
js 颜色选择插件
2017/01/23 Javascript
BootStrap的双日历时间控件使用
2017/07/25 Javascript
ES6学习教程之块级作用域详解
2017/10/09 Javascript
JS实现的透明度渐变动画效果示例
2018/04/28 Javascript
JavaScript高级函数应用之分时函数实例分析
2018/08/03 Javascript
Node.js操作系统OS模块用法分析
2019/01/04 Javascript
详解Puppeteer前端自动化测试实践
2019/02/21 Javascript
ES6 Promise对象的应用实例分析
2019/06/27 Javascript
微信小程序如何实现在线客服功能
2019/10/16 Javascript
easyUI 实现的后台分页与前台显示功能示例
2020/06/01 Javascript
jQuery实现B2B网站后台管理系统侧导航
2020/07/08 jQuery
Python中的if、else、elif语句用法简明讲解
2016/03/11 Python
Python中规范定义命名空间的一些建议
2016/06/04 Python
Python cookbook(数据结构与算法)筛选及提取序列中元素的方法
2018/03/19 Python
Python下使用Scrapy爬取网页内容的实例
2018/05/21 Python
Python爬虫包BeautifulSoup异常处理(二)
2018/06/17 Python
Python基于mysql实现学生管理系统
2019/02/21 Python
Python 使用 environs 库定义环境变量的方法
2020/02/25 Python
python opencv实现图片缺陷检测(讲解直方图以及相关系数对比法)
2020/04/07 Python
8款精美的CSS3表单设计(登录表单/下拉选择/按钮附演示及源码)
2013/02/04 HTML / CSS
canvas如何绘制钟表的方法
2017/12/13 HTML / CSS
办理护照介绍信
2014/01/16 职场文书
班主任个人工作反思
2014/04/28 职场文书
应届大学生求职信
2014/07/20 职场文书
家长给老师的感谢信
2015/01/20 职场文书
工伤认定行政答辩状
2015/05/22 职场文书