使用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文件读写操作之文件写入代码
Jan 13 PHP
PHP基于GD库的缩略图生成代码(支持jpg,gif,png格式)
Jun 19 PHP
PHP实现生成唯一编号(36进制的不重复编号)
Jul 01 PHP
php查找指定目录下指定大小文件的方法
Nov 28 PHP
php判断两个日期之间相差多少个月份的方法
Jun 18 PHP
PHP添加图片水印、压缩、剪切的封装类
Aug 17 PHP
PHP实现linux命令tail -f
Feb 22 PHP
PHP图片加水印实现方法
May 06 PHP
[原创]php使用curl判断网页404(不存在)的方法
Jun 23 PHP
thinkphp 抓取网站的内容并且保存到本地的实例详解
Aug 25 PHP
自写的利用PDO对mysql数据库增删改查操作类
Feb 19 PHP
PHP 实现重载
Mar 09 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
德生BCL3000的电路分析和打磨
2021/03/02 无线电
php5 图片验证码实现代码
2009/12/11 PHP
php中修改浏览器的User-Agent来伪装你的浏览器和操作系统
2011/07/29 PHP
PHP实现全角字符转为半角方法汇总
2015/07/09 PHP
JAVASCRIPT keycode总结
2009/02/04 Javascript
jQuery 借助插件Lavalamp实现导航条动态美化效果
2013/09/27 Javascript
JQuery插件jcarousellite的参数中文说明
2015/05/11 Javascript
Java Mybatis框架入门基础教程
2015/09/21 Javascript
Angular.js与Bootstrap相结合实现表格分页代码
2016/04/12 Javascript
基于JS代码实现当鼠标悬停表格上显示这一格的全部内容
2016/06/12 Javascript
jQuery实现搜索页面关键字的功能
2017/02/16 Javascript
vue2的todolist入门小项目的详细解析
2017/05/11 Javascript
javaScript canvas实现(画笔大小 颜色 橡皮的实例)
2017/11/28 Javascript
详解用Node.js写一个简单的命令行工具
2018/03/01 Javascript
vue生成token并保存到本地存储中
2018/07/17 Javascript
JS实现图片上传多次上传同一张不生效的处理方法
2018/08/06 Javascript
vue拖拽组件使用方法详解
2018/12/01 Javascript
详解Vue一个案例引发「内容分发slot」的最全总结
2018/12/02 Javascript
javascript中call()、apply()的区别
2019/03/21 Javascript
AngularJS实现的鼠标拖动画矩形框示例【可兼容IE8】
2019/05/17 Javascript
JS+HTML5本地存储Localstorage实现注册登录及验证功能示例
2020/02/10 Javascript
python正则表达式抓取成语网站
2013/11/20 Python
python基于mysql实现的简单队列以及跨进程锁实例详解
2014/07/07 Python
使用Python编写简单网络爬虫抓取视频下载资源
2014/11/04 Python
Python设计模式之适配器模式原理与用法详解
2019/01/15 Python
使用css3制作动感导航条示例
2014/01/26 HTML / CSS
澳大利亚优质的家居用品和生活方式公司:Bed Bath N’ Table
2019/04/16 全球购物
美国运动鞋类和服装零售连锁店:Shoe Palace
2019/08/13 全球购物
大学毕业生简单自荐信
2013/11/05 职场文书
项目经理的岗位职责
2013/11/23 职场文书
创业计划书如何吸引他人眼球
2014/01/10 职场文书
优秀教师的感人事迹
2014/02/04 职场文书
放飞蜻蜓反思
2014/02/05 职场文书
店长岗位职责
2015/02/11 职场文书
WebRTC记录音视频流(web技术分享)
2022/02/24 Javascript
Python实现视频自动打码的示例代码
2022/04/08 Python