Andy's Blog » qh663 » PHP套接字编程

PHP套接字编程

<?php
/**
     * 功能:    套接字
     * 作者:    qh663
     * 参数:   string  $url           网址,如:
http://www.21andy.com
     * 参数:   bool    $get_header    是否返回header标头
     * 参数:   bool    $real_url   用于测试网址是否正确
     * 返回:   bool/string
     */

    
function socket($url, $get_header = false,$real_url = false){
        
$arr = explode('/',$url);
        
$host = $arr[2];
        
unset($arr[0], $arr[1], $arr[2]);
        
$path = '/'.implode('/', $arr);
        
unset($arr);
        
$service_port = getservbyname('www', 'tcp');
        
$address = gethostbyname($host);
        
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
        
if ($socket >= 0) {
            
$result = socket_connect($socket, $address, $service_port);
            
if ($result >= 0) {
                
$in = "HEAD $path HTTP/1.1rn";
                
$in .= "Host: $hostrn";
                
$in .= "Connection: Closernrn";
                
socket_write($socket, $in, strlen($in));
                
if($real_url){
                    
if(socket_read($socket, 15) == 'HTTP/1.1 200 OK') return true;
                
}elseif($get_header){
                    
while ( $out = socket_read($socket, 512)){
                        
$re .= $out;
                    
}
                    
return $re;
                
}
                
socket_close($socket);
            
}
        
}
        
return false;
    
}
?>

//test1 发送一个socket,多线程
//(此例在当前目录新建5个文件 1_tmp.txt、2_tmp.txt、3_tmp.txt、4_tmp.txt、5_tmp.txt)

if(empty($_GET['str'])){
        
$url = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['SCRIPT_NAME'];
        
while ($a++ < 5){
                
socket("$url?str={$a}_tmp.txt");
        
}
} else {
        
fopen($_GET['str'], "w");;
        
die();
}
 
$u = 'http://down1.sz1001.net/up/小型软件2_0810/TomatoGhostXP.rar';
echo "<pre>";

//test2 返回一个地址的header,实验证明运行速度比get_headers更快

echo socket($u,true);

//test3 测试页面是否存在,实验证明运行速度比get_headers更快

echo socket($u,true,true) ? "\n网址正确": "\n网址错误";

Incoming search terms:

Tags: PHP

本文地址: http://blog.21andy.com/20060630/356.html