php fsockopen() Usenet中获取文件
fsockopen() Us中获取文件
打开Socket
使用fsockopen()来打开一个Socket。这个函数在PHP3和PHP4中都存在。函数的原型如下:
<?php intfsockopen (string hostname, int port [, int errno [, string errstr [, double timeout]]]) ?>
对于网络主机,它将建立一个TCP的Socket的连接到主机名的端口上。主机名可以是域名或者IP地址。对于UDP连接,你需要明确指出其协议:udp://hostname。对于unix主机,主机名将在socket的路径中使用,在这个例子中端口必须设置成0。可选项timeout可以用来设置连接超时的秒数。关于fsockopen()的更多信息可以访问 网络新闻传输协议(NNTP)访问一个usenet新闻服务器需要用到一个特别的协议,称作NNTP,即网络新闻传输协议标准。这个协议的详细资料在RFC977中,你可以在中查看到。这个文档详细的描述了如何使用不同的命令来连接并且和NNTP服务器对话。 连接服务器连接到NNTP服务器需要知道服务器的主机名(或者IP地址)和它将要监听的端口。另外建议你加上一个超时的时间,这样连接失败的时候就不会“冻结”程序。
<?php $cfgServer = "your.news.host"; $cfgPort = 119; $cfgTimeOut = 10; // open asocket if(!$cfgTimeOut) // without timeout $usenet_handle = fsockopen($cfgServer, $cfgPort); else // with timeout $usenet_handle = fsockopen($cfgServer, $cfgPort, &$errno, &$errstr, $cfgTimeOut); if(!$usenet_handle) { echo"Connexionfailedn"; exit(); } else { echo"Connectedn"; $tmp = fgets($usenet_handle, 1024); } ?>
与服务器交互现在我们已经连接上服务器了,而且能够通过先前打开的socket连接与服务器进行交互。让我们对服务器说“我们要从某一新闻分组中获取到最新的10篇文章”。RFC977定义了如何选择正确的新闻分组的命令,如下:GROUPggg必需的参数ggg是你将要选择的新闻分组的名字,比如net.news。使用list命令你可以获取到一组有效的新闻列表。成功选择响应会返回组中首尾两篇新闻的新闻号以及对存档新闻号估计。比如
chrome:~$ telnetmy.news.host 119Trying aa.bb.cc.dd...Connected tomy.news.host.Escape character is‘^] ‘.200 my.news.hostInterNetNews NNRP server INN 2.2.2 13-Dec-1999 ready (posting ok).GROUP alt. test211 232 222996 223235alt.testquit205 .
在接受到命令“GROUP alt.test”,新闻服务器返回了“211232 222996 223235 alt.test”。其中211是RFC标识码(简单的解释说命令已经成功的执行—查看RFC你可以获取更加详细的资料),返回信息说明其中有232篇文章,其中最旧的新闻的索引号是222996,而最新的新闻索引号是223235。现在让我们计算下:222996+232并不等于232235。这丢失的文章或者从这服务器移除出去了,或者被他的作者取消了(是的,这是可能的,也是很容易实现的),或者是删除了。小心起见,在选择新闻分组之前,服务器可能需要认证,当然这是由服务器是否公开或者私有来决定的。一般是允许任何人获取新闻,但发表新闻需要通过认证。
<?php //$cfgUser = "xxxxxx"; //$cfgPasswd = "yyyyyy"; $cfgNewsGroup = "alt.php"; // identification required on private server if($cfgUser) { fputs($usenet_handle, "AUTHINFO USER".$cfgUser."n"); $tmp = fgets($usenet_handle, 1024); fputs($usenet_handle, "AUTHINFO PASS ".$cfgPasswd."n"); $tmp = fgets($usenet_handle, 1024); // check error if($tmp != "281Okrn") { echo "502Authentication errorn"; exit(); } } // select newsgroup fputs($usenet_handle, "GROUP ".$cfgNewsGroup."n"); $tmp = fgets($usenet_handle, 1024); if($tmp == "480 Authentication required for commandrn") { echo "$tmpn"; exit(); } $info = split(" ", $tmp); $first = $info[2]; $last = $info[3]; print "First : $firstn"; print "Last : $lastn"; ?>
获取一些文章现在我们已经有最新文章的A索引号,那就能很容易的获取最新的十篇文章。RFC977指出使用ARTICLE命令可以和文章的索引号或者消息的ID一起使用。为了小心起见,在这里,文章的索引号和消息ID是不同的,因为每个新闻服务器定义不同,所以在不同的新闻服务器上相同文章的索引号都会不一样的,但是消息ID好是唯一的(包含在文章的头部中)
<?php $cfgLimit = 10; // upload last articles $boucle=$last-$cfgLimit; while ($boucle <= $last) { set_time_limit(0); fputs($usenet_handle, "ARTICLE$bouclen"); $article=""; $tmp = fgets($usenet_handle, 4096); if(substr($tmp,0,3) != "220") { echo "+----------------------+n"; echo "Error onarticle $bouclen"; echo "+----------------------+n"; } else { while($tmp!=".rn") { $tmp = fgets($usenet_handle, 4096); $article = $article.$tmp; } echo "+----------------------+n"; echo "Article$bouclen"; echo "+----------------------+n"; echo "$articlen"; } $boucle++; } ?>
以上就是php fsockopen() Usenet中获取文件的内容,更多相关内容请关注PHP中文网(www.php.cn)!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

PHP 8.4 带来了多项新功能、安全性改进和性能改进,同时弃用和删除了大量功能。 本指南介绍了如何在 Ubuntu、Debian 或其衍生版本上安装 PHP 8.4 或升级到 PHP 8.4

CakePHP 是 PHP 的开源框架。它的目的是使应用程序的开发、部署和维护变得更加容易。 CakePHP 基于类似 MVC 的架构,功能强大且易于掌握。模型、视图和控制器 gu

Visual Studio Code,也称为 VS Code,是一个免费的源代码编辑器 - 或集成开发环境 (IDE) - 可用于所有主要操作系统。 VS Code 拥有针对多种编程语言的大量扩展,可以轻松编写

CakePHP 是一个开源MVC 框架。它使开发、部署和维护应用程序变得更加容易。 CakePHP 有许多库可以减少大多数常见任务的过载。

本教程演示了如何使用PHP有效地处理XML文档。 XML(可扩展的标记语言)是一种用于人类可读性和机器解析的多功能文本标记语言。它通常用于数据存储
