非常实用的socket套接字编程

jackxiang 2010-7-7 22:55 | |

<?php
/**
     * 功能:    套接字
     * 作者:    qh663
     * 参数:   string  $url           网址,如:[url]http://qh8.net/php/index.php?abc=123[/url]
     * 参数:   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.1\r\n";
                $in .= "Host: $host\r\rn";
                $in .= "Connection: Close\r\n\r\n";
                socket_write($socket, $in, strlen($in));
                if($real_url){
                    if(strpos(socket_read($socket, 15), '200')) 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网址错误";
文章引用自:http://www.phpx.com/happy/thread-119670-1-1.html

作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:https://jackxiang.com/post/3289/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!

评论列表
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]