在PHP中使用Sockets:从Usenet中获取文件
ired 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 != "281Ok\r\n") { echo "502Authentication error\n"; exit(); } } // select newsgroup fputs($usenet_handle, "GROUP ".$cfgNewsGroup."\n"); $tmp = fgets($usenet_handle, 1024); if($tmp == "480 Authentication required for command\r\n") { echo "$tmp\n"; exit(); } $info = split(" ", $tmp); $first = $info[2]; $last = $info[3]; print "First : $first\n"; print "Last : $last\n"; ?> 获取一些文章 现在我们已经有最新文章的A索引号,那就能很容易的获取最新的十篇文章。RFC977指出使用ARTICLE命令可以和文章的索引号或者消息的ID一起使用。为了小心起见,在这里,文章的索引号和消息ID是不同的,因为每个新闻服务器定义不同,所以在不同的新闻服务器上相同文章的索引号都会不一样的,但是消息ID好是唯一的(包含在文章的头部中)
我们仅仅从这个服务器的这个分组上获取了十条最新的新闻。你也可以使用HEAD命令来至获取文章的头部信息,或者使用BODY命令来获取新闻的正文。 关闭连接 使用fclose()函数你就可以结束与NNTP服务器之间的会话,当然你可以些一个新的文件,如下:
更多关于fclose()的信息,请看:http://www.php.net/manual/function.fclose.php 结论 本文中,我们只说明了在确定的情况下如何打开、使用和关闭一个socket连接:连接上一个NNTP服务器然后从新闻分组中取回一些文章。使用POST命令在NNTP服务器上发表一篇文章并不复杂多少。 因此,下一步就是编写一个新闻客户端(并去掉一些Netscape),它需要能很容易的保存文章,并使用一些搜索引擎(比如htgid,http://www.htdig.org/)来索引这些文章,而且要有一个WEB应用程序能进行新闻分组下的关键字搜索。这里有一个例子,你可以访问http://www.phpindex.com/ng/去下载。 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |