|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
当然你可以把你最基本的功能放出来的时候就放出来,比如放到论坛上,让大家都参与, 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和MYSQL开发的要领之后,再回头看你写的那个留言本,你也许会怀疑那真的是你写的吗?当然,如果屋里还有鬼的话,也许是它写的-_- |
|