使用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 采集程序 常用函数
Dec 18 PHP
php HtmlReplace输入过滤安全函数
Jul 03 PHP
浅析PHP的ASCII码转换类
Jul 05 PHP
mantis安装、配置和使用中的问题小结
Jul 14 PHP
在Windows系统下使用PHP生成Word文档的教程
Jul 03 PHP
PHP和C#可共用的可逆加密算法详解
Oct 26 PHP
CI分页类首页、尾页不显示的解决方法
Mar 28 PHP
Netbeans 8.2将支持PHP7 更精彩
Jun 13 PHP
php事件驱动化设计详解
Nov 10 PHP
jQuery ajax+PHP实现的级联下拉列表框功能示例
Feb 12 PHP
php适配器模式简单应用示例
Oct 23 PHP
PHP基于openssl实现非对称加密代码实例
Jun 19 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来处理多个提交任务
2006/10/09 PHP
在PHP中执行系统外部命令
2006/10/09 PHP
PHP 在线翻译函数代码
2009/05/07 PHP
PHP static局部静态变量和全局静态变量总结
2014/03/02 PHP
php5.2 Json不能正确处理中文、GB编码的解决方法
2014/03/28 PHP
Ajax PHP JavaScript MySQL实现简易无刷新在线聊天室
2016/08/17 PHP
关于laravel-admin ueditor 集成并解决刷新的问题
2019/10/21 PHP
使用jquery mobile做幻灯播放效果实现步骤
2013/01/04 Javascript
Javascript的时间戳和php的时间戳转换注意事项
2013/04/12 Javascript
JQuery实现倒计时按钮具体方法
2013/11/14 Javascript
jQuery中get和post方法传值测试及注意事项
2014/08/08 Javascript
jQuery预加载图片常用方法
2015/06/15 Javascript
纯JS代码实现一键分享功能
2016/04/20 Javascript
详解Angular 4.x Injector
2017/05/04 Javascript
form表单数据封装成json格式并提交给服务器的实现方法
2017/12/14 Javascript
vue实现点击关注后及时更新列表功能
2018/06/26 Javascript
[02:51]DOTA2战队出征照拍摄花絮 TI3明星化身时尚男模
2013/07/22 DOTA
跟老齐学Python之编写类之三子类
2014/10/11 Python
python实现自动发送邮件发送多人、群发、多附件的示例
2018/01/23 Python
python3 爬取图片的实例代码
2018/11/06 Python
python:接口间数据传递与调用方法
2018/12/17 Python
十个Python练手的实战项目,学会这些Python就基本没问题了(推荐)
2019/04/26 Python
详细介绍Python进度条tqdm的使用
2019/07/31 Python
Django Docker容器化部署之Django-Docker本地部署
2019/10/09 Python
python 3.7.4 安装 opencv的教程
2019/10/10 Python
Python本地及虚拟解释器配置过程解析
2020/10/13 Python
python爬取招聘要求等信息实例
2020/11/20 Python
html5 application cache遇到的严重问题
2012/12/26 HTML / CSS
Bootstrap File Input文件上传组件
2020/12/01 HTML / CSS
英国排名第一的LED灯泡网站:LED Bulbs
2019/09/03 全球购物
UNIX命令速查表
2012/03/10 面试题
《三亚落日》教学反思
2014/04/26 职场文书
党支部对照检查材料
2014/08/25 职场文书
教师党员个人整改措施
2014/10/27 职场文书
余世维讲座观后感
2015/06/11 职场文书
OpenCV-Python直方图均衡化实现图像去雾
2021/06/07 Python