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()的更多信息,请参考:h
ttp://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);
}
?>
与服务器对话
现在我们已经连接到了服务器,可以通过前面打开的socket同服务器对话了。比如
说我们要从某个新闻组得到最近的10篇文章。RFC977(昆明男科医院)指出,第一步要用GROUP命令选择
正确的新闻组:
GROUP
ggg
在php中使用sockets:从新闻组中获取文章
时间: 2025-01-06 14:44:15
在php中使用sockets:从新闻组中获取文章的相关文章
将Excel导入DataGridView 中的"select * from [Sheet1$]"中[ 
]里面表单名的动态获取
Sheet1$是Excel默认的第一个表名,如果改动:select * from [Sheet1$]"将查询失败,因此应根据选择自动获取excel表名: 1 OpenFileDialog ofd = new OpenFileDialog(); //选择文件路径 2 ofd.Title = "Excel文件"; 3 ofd.FileName = ""; 4 ofd.Filter = "Excel文件(*.xls)| *.xls"; 5 s
MATLAB检查指定路径中的子文件夹中的文件名中是否带有空格
测试文件夹为: clear;close all;clc; %% %程序实现的功能 %检查指定路径中的子文件夹中的文件名中是否带有空格,并去掉文件名中的空格 %% %程序中用到的之前不清楚的函数如下 %1)strfind(a,b):即找a中是否有b,如果a中有b,则输出b的位置序号.没有输出空数组 %2)isempty(a):判断数组是否为空 %3)strrep(a,b,c):就是把a中所有出现的b换为c %4)movefile(a,b):a移动为b,如C:\test1.jpg移动为C\test2
在JS中,将text框中数据格式化,根据不同的小数位数,格式化成对应的XXX,XXX,XXX.XX(2位小数) 或者XXX,XXX,XXX(0位小数)
//在JS中,将text框中数据格式化,根据不同的小数位数,格式化成对应的XXX,XXX,XXX.XX(2位小数) 或者XXX,XXX,XXX(0位小数) function formatNum(num, n) {//参数说明:num 要格式化的数字 n 保留小数位 num = String(num.toFixed(n)); var re = /(-?\d+)(\d{3})/; while (re.test(num)) num = num.replace(re, "$1,$2") ret
JSP隐含变量和Spring中Model在EL表达式中的读取顺序
偶然中存在着必然,必然中存在着偶然 偶然出现的bug,必然存是由代码的不合理甚至错误的 代码逻辑越长,越复杂,就越容易出现bug 之前项目里几次偶然出现了一个bug,简单的描述就是第一次新增了之后进行一个B操作,之后在新增一次,页面中的一个隐含变量会"记住"这个新增之后的id,因为这个需要连续两次新增且在第一次新增之后进行B操作之后才会出现,所以很长时间里面都是偶然出现. 定位问题的过程就是进行很多次的操作,然后逐个排除.尝试自己的猜测,再次进行代码级的排除.定位这种问题一定要有一定的
php中的curl】php中curl的详细解说
本文我来给大家详细介绍下cURL的简单的使用方法,下文我将会给大家详细介绍cURL的高级应用, cURL可以使用URL的语法模拟浏览器来传输数据, FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以及 LDAP等协议都可以很好的支持,包括一些: HTTPS认证,HTTP POST方法,HTTP PUT方法,FTP上传,keyberos认证,HTTP上传,代理服务器,cookies,用户名/密码认证, 下载文件断点续传,上传文件断点续传,htt
Sliverlight linq中的数组筛选数据库中的数据
首先 什么是linq呢 ? LINQ即Language Integrated Query(语言集成查询),LINQ是集成到C#和Visual Basic.NET这些语言中用于提供查询数据能力的一个新特性. 它是.NET框架的扩展,它允许我们以数据库查询的方式查询数据集合. 借助于LINQ技术,我们可以使用一种类似SQL的语法来查询任何形式的数据. 接下来讲讲我工作中用到的 linq中的数组筛选数据库中的数据 public List GetList1(string cardPhone,string
设计模式中聚合和组合--代码中的实现
●引言: 最近一直在看设计模式,以前写过一篇文章:设计模式中的关系在代码中的实现 之后他们问我说:聚合和组合在代码上怎样表现出生命期的不同.因为当时是真心不懂,不敢回答,现在有一点点心得,和大家分享一下. ●定义: 聚合:表示两个对象之间是整体和部分的弱关系,部分的生命周期可以超越整体.如电脑和鼠标. ?大话上的聚合: ?大话上的组合: 表示两个对象之间是整体和部分的强关系,部分的生命周期不能超越整体,或者说不能脱离整体而存在.组合关系的"部分",是不能在整体之间进行共享的. ●异同点
android中实现毛笔效果(View 中绘图)
最近有一个项目设计一个APP实现通过触摸屏实现毛笔写字效果.传统的绘画板程序直接通过Path的moveTo和LineTo便可实现简单的线条绘画程序.然而要达到毛笔的笔锋效果则需要更为详细点的设计.我的实现思路是通过以触摸事件DOWN.MOVE.UP中的每一个点为圆心画圆,除此之外还可通过触摸压力的大小改变所绘圆的半径,这样一连串的圆便可粗略地模拟毛笔笔锋效果,在设计次效果时遇到两个问题: 1:android触摸中的MOVE时间取点的频率不是很高,会隔一定的像素取点,当轻触滑动时会出现一天不连续圆
关于phpcms中模块_tag.class.php中的pc_tag()方法的含义
关于phpcms中模块_tag.class.php中的pc_tag()方法的含义: 在phpcms系统中自己写后台模块,要在前台模板中显示出来需要在\phpcms\modules\自己定义的模块名\classes\目录下写一个"模块名_tag.class.php"文件,此文件中输出前台模块板所使用的自定义的pc标签,标签定义类中的方法如何写我在这里就不赘述了,因为网上很多相关内容的资料,比如:(http://wenku.baidu.com/link?url=sesC6Zsic5BJi6