本文实例讲述了php中fsockopen用法。分享给大家供大家参考。
$fp=fsockopen(“127.0.0.1”,80); //打开数据流
if(!$fp) //如果打开出错
{
echo “unable to openn”; //输出内容
}
else //如果成功打开
{
fwrite($fp,”get / http/1.0rnrn”); //向数据流写入内容
stream_set_timeout($fp,2); //进行超时设置
$res=fread($fp,2000); //读取内容
$info=stream_get_meta_data($fp); //获取数据流报头
fclose($fp); //关闭数据流
if($info[‘timed_out’]) //如果超时
{
echo ‘connection timed out!’; //输出内容
}
else
{
echo $res; //输出读取内容
}
}
* @copyright 马永占(MyZ)
希望本文所述对大家的php程序设计有所帮助。
//创建服务端
$socket=stream_socket_server(“tcp://0.0.0.0:8000”,$errno,$errstr);
//如果创建失败
if(!$socket)
{
echo “$errstr ($errno)<br />n”;
}
//如果创建成功
else
{
//接受连接
while($conn=stream_socket_accept($socket))
{
//写入数据
fwrite($conn,’the local time is ‘.date(‘n/j/y g:i a’).”n”);
//关闭连接
fclose($conn);
}
//关闭socket
fclose($socket);
}
* @copyright 马永占(MyZ)
复制代码 代码如下:$fp=fsockopen;
//打开数据流 if //如果打开出错 { echo “unable to openn”; //输出内容 }
else //如果成功打开 { fwrite($fp,”get / http/1.0rnrn”);
//向数据流写入内容 stream_set_timeout; //进行超时设置 $res=fread;
//读取内容 $info=stream_get_meta_data; //获取数据流报头 fclose;
//关闭数据流 if //如果超时 { echo ‘connection timed out!’; //输出内容 }
else { echo $res; //输出读取内容 } } //实例二 //创建服务端
$socket=stream_socket_server(“tcp://0.0.0.0:8000”,$errno,$errstr);
//如果创建失败 if { echo “$errstr
n”; } //如果创建成功 else { //接受连接
while($conn=stream_socket_accept { //写入数据 fwrite($conn,’the local
time is ‘.date; //关闭连接 fclose; } //关闭socket fclose; } //
$file=”test.txt”; //定义文件 $fp=fopen; //打开数据流 if //如果成功打开 {
stream_set_write_buffer; //设置缓冲区 fwrite; //写入内容 fclose;
//关闭数据流 }
//
echo {$value} ;
$file=”test.txt”; //定义文件
$fp=fopen($file,”w”); //打开数据流
if($fp) //如果成功打开
{
stream_set_write_buffer($fp,0); //设置缓冲区
fwrite($fp,$output); //写入内容
fclose($fp); //关闭数据流
}
$inheader = 0;
//实例二
echo $peer ;
$fp = fsockopen($url[”host”], $url[”port”] ? $url[”port”] :
80);
$results .= $line;
建立一个socket server端, 代码见后面
* @name test.php
}
$results = ;
fputs($fp, Host: $url[host] );
}
}
?php
* @link
if (!eregi(^HTTP/1.. 200, $line)) return 返回结果错误;
* @author 马永占(MyZ)
这个和fsockopenfsockopen一样.以socket方式打开一个连接,只是参数不同
}elseif (!$inheader) {
if ($inheader ($line == || $line == )) {
$encoded .= ($encoded ? : );
* @link
//定义一些东西
}
$address = {$xport}://{$ip}:{$port};
* @link
if (!isset($url[”query”])) $url[”query”] = ;
}
/**
如果是建立的是tcp的server 就用stream_socket_accept进行通讯
fputs($fp, Content-length: . strlen($encoded) . );
*金沙国际唯一官网网址,/
}
我最常用的是模拟post
这里就不介绍了.
}
fputs($fp, Connection: close );
set_time_limit(0);
$line = fgets($fp,1024);
echo transports: ;
//得到可用socket
至于要模拟get方式….直接file_get_content就行了.
*/
* @name test.php
$peer = stream_socket_get_name($conn,true);
fsockopen
$socket = stream_socket_server($address, $errno, $errstr,
STREAM_SERVER_BIND);
while ($conn = stream_socket_accept($socket,-1)) {
?php
if (!$url) return URL不能解析;
/**
stream_www.2979.com,socket_sendto($socket, date(Y-m-d H:i:s ), 0, $peer);
echo {$errstr} ({$errno}) ;
$pkt = stream_socket_recvfrom($socket, 1, 0, $peer);
* @author 马永占(MyZ)
//$fp = stream_socket_client($url[【www.2979.com】$fp卡塔尔(قطر //假诺张开出错,笔者最常用的是效仿post。”host”].:.($url[”port”] ?
$url[”port”] : 80));
* @date Sun Jan 27 00:49:00 CST 2008
$ip = 127.0.0.1;
* @date Sat Jan 26 23:01:23 CST 2008
/**
$xport = tcp;
elseif ($xport==”udp”) {
//关闭socket
//得到访问的端口
$encoded .= rawurlencode($k).=.rawurlencode($v);
$url = parse_url($url);
$encoded = ;
//把剩余的头信息过滤掉
if ($xport==”tcp”) {
//设置不超时.服务端当然不能超时
* @param string $url 提交到的地址
if (!$fp) return 不能打开到$url[host]的连接;
//得到访问的端口
如果是建立的是udp的server
就用stream_socket_recvfrom和stream_socket_sendto进行通讯,而且stream_socket_server中需要加个参数STREAM_SERVER_BIND
if ($xport==”tcp”) {
—————————- stream_socket
client—————————
//发送
fclose($fp);
?php
$xport = tcp;
} while ($pkt !== false);
}
echo $peer ;
fputs($fp, sprintf(POST %s%s%s HTTP/1.0 , $url[”path”],
$url[”query”] ? ? : , $url[”query”]));
fclose($fp);
echo listening {$xport}:{$port} … ;
}
streamSocketServer—————————
$fp = stream_socket_client($address, $errno, $errstr, 1);
fputs($fp, Content-type: application/x- );
$socket = stream_socket_server($address, $errno, $errstr);
echo $errstr ($errno)br / ;
* php 发送POST请求
fclose($conn);
以socket方式打开一个连接
do {
$xportlist = stream_get_transports();
stream_socket_server
* @return string
if (!isset($url[”port”])) $url[”port”] = ;
elseif ($xport==”udp”) {
foreach ($xportlist as $value) {
$inheader = 1;
//建立socketserver
/**
else {
if (!$fp) {
$port = 8001;
}
* @param array $data 要提交的参数 array(”a”=””,”b”=””);
?
fwrite($fp, );
fputs($fp, $encoded );
echo virtualPost(””,array(myz=”马永占”));
*/
?
}
//接受
//滤掉空行
$port = 8001;
*
while(!feof($fp)) {
* @name test2.php
while (list($k,$v) = each($data)) {
* @date Sun Jan 27 00:45:57 CST 2008
$address = {$xport}://.0:{$port};
—————————- fsockopen(post)—————————
还有个socket扩展,这个是最基础的建立socket,但是从开始就放到pecl中了.
?
function virtualPost($url, $data) {
return $results;
代码见后面
* @author 马永占(MyZ)
} else {
}
$line = fgets($fp,1024);
stream_socket_client, 代码见后面
//许可一个socket连接,-1超时
*/
* @copyright 马永占(MyZ)
fclose($socket);
这个是小李挖掘的到的…不错
}
header(Content-type: text/html;charset=utf-8);
fwrite($conn, ”The local time is ” . date(Y-m-d H:i:s ));
echo fread($fp, 1024);
if (!$socket) {
www.2979.com, 之家, 代码, 参数, 实例, 技巧, 方式, 端口, 脚本