使用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下利用shell后台运行PHP脚本,并获取该脚本的Process ID的代码
Sep 19 PHP
php实现图形显示Ip地址的代码及注释
Jan 20 PHP
php从数据库查询结果生成树形列表的方法
Apr 17 PHP
搭建基于Docker的PHP开发环境的详细教程
Jul 01 PHP
利用PHP绘图函数实现简单验证码功能的方法
Oct 18 PHP
PHP获取访问页面HTTP状态码的实现代码
Nov 03 PHP
Yii 2.0实现联表查询加搜索分页的方法示例
Aug 02 PHP
laravel使用Faker数据填充的实现方法
Apr 12 PHP
深入学习微信网址链接解封的防封原理visit_type
Aug 15 PHP
php生成HTML文件的类方法
Oct 11 PHP
php 使用 __call实现重载功能示例
Nov 18 PHP
laravel框架模型和数据库基础操作实例详解
Jan 25 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下清空字符串中的HTML标签的代码
2010/09/06 PHP
php环境配置之CGI、FastCGI、PHP-CGI、PHP-FPM、Spawn-FCGI比较?
2011/10/17 PHP
php类自动装载、链式操作、魔术方法实现代码
2017/07/23 PHP
jQuery EasyUI API 中文文档 - ComboBox组合框
2011/10/07 Javascript
关于Javascript与iframe的那些事儿
2013/07/04 Javascript
JavaScript中几种排序算法的简单实现
2015/07/29 Javascript
JavaScript模块规范之AMD规范和CMD规范
2015/10/27 Javascript
Vue 单文件中的数据传递示例
2017/03/21 Javascript
Node.js使用gm拼装sprite图片
2017/07/04 Javascript
使用vue-cli编写vue插件的方法
2018/02/26 Javascript
浅析JS中回调函数及用法
2018/07/25 Javascript
JavaScript 点击触发复制功能实例详解
2018/11/02 Javascript
VUE搭建手机商城心得和遇到的坑
2019/02/21 Javascript
JavaScript经典案例之简易计算器
2020/08/24 Javascript
[01:29:31]VP VS VG Supermajor小组赛胜者组第二轮 BO3第一场 6.2
2018/06/03 DOTA
python中的代码编码格式转换问题
2015/06/10 Python
Python实现字符串的逆序 C++字符串逆序算法
2020/05/28 Python
python爬虫正则表达式之处理换行符
2018/06/08 Python
Python中实例化class的执行顺序示例详解
2018/10/14 Python
python 内置模块详解
2019/01/01 Python
Python实现word2Vec model过程解析
2019/12/16 Python
Django静态资源部署404问题解决方案
2020/05/11 Python
Python3 pywin32模块安装的详细步骤
2020/05/26 Python
KIEHL’S科颜氏官方旗舰店:源自美国的顶级护肤品牌
2018/06/07 全球购物
事业单位请假制度
2014/01/13 职场文书
高二生物教学反思
2014/01/27 职场文书
函授生自我鉴定
2014/03/25 职场文书
书香校园建设方案
2014/05/02 职场文书
2014年节能降耗工作总结
2014/12/11 职场文书
基于Nginx实现限制某IP短时间访问次数
2021/03/31 Servers
Pytorch 使用tensor特定条件判断索引
2021/04/08 Python
使用springboot暴露oracle数据接口的问题
2021/05/07 Oracle
MySQL查询学习之基础查询操作
2021/05/08 MySQL
通过feDisplacementMap和feImage实现水波特效
2022/04/24 HTML / CSS
SpringBoot全局异常处理方案分享
2022/05/25 Java/Android
Mysql的Table doesn't exist问题及解决
2022/12/24 MySQL