喜悦国际村 
» 游客:  注册 | 登录 | 搜索 | 统计 | 喜悦证交所 | 帮助

RSS 订阅当前论坛  

上一主题 下一主题
     
标题: 非常实用的socket套接字编程  
  本主题被作者加入到他/她的 Blog 中  
 
qh663
版主
Rank: 7Rank: 7Rank: 7
中级会员


UID 30020
精华 0
积分 546
帖子 580
金钱 546 喜悦币
威望 0
人脉 0
阅读权限 100
注册 2004-7-13
来自 河源
状态 离线
非常实用的socket套接字编程



<?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_INETSOCK_STREAMSOL_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$instrlen($in));
                if(
$real_url){
                    if(
socket_read($socket15) == 'HTTP/1.1 200 OK') return true;
                }elseif(
$get_header){
                    while ( 
$out socket_read($socket512)){
                        
$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网址错误";




五百多篇PHP学习资料
喜悦村BLOG
php团队接兼职项目QQ:80031807
PHP群:768844
2006-6-28 10:47 AM#1
查看资料  访问主页  Blog  发短消息  QQ  顶部
 
wuminghuo
新手上路
Rank: 1
初级会员


UID 68697
精华 0
积分 38
帖子 62
金钱 38 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2006-2-18
来自 郑州--北京
状态 离线
[推荐阅读] 特别说明 昨天本人QQ号码被盗
不明白,先学习下
2006-7-9 01:59 PM#2
查看资料  访问主页  发短消息  顶部
 
fcicqbbs
注册会员
Rank: 2



UID 74804
精华 0
积分 96
帖子 110
金钱 96 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2006-6-10
状态 离线
[推荐阅读] 怎样改变远程服务器的 php.ini ?
偶明白怎么回事了...
可惜暂时用不着.
2006-7-9 05:37 PM#3
查看资料  访问主页  发短消息  顶部
 
fcicqbbs
注册会员
Rank: 2



UID 74804
精华 0
积分 96
帖子 110
金钱 96 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2006-6-10
状态 离线
[推荐阅读] 在线手册集锦
请修改个地方
if(socket_read($socket, 15) == 'HTTP/1.1 200 OK') return true;
改为:
$readheader=socket_read($socket, 15);
if(($readheader == 'HTTP/1.1 200 OK') ||($readheader == 'HTTP/1.0 200 OK')) return true;
unset $readheader;
2006-7-9 05:47 PM#4
查看资料  访问主页  发短消息  顶部
 
qh663
版主
Rank: 7Rank: 7Rank: 7
中级会员


UID 30020
精华 0
积分 546
帖子 580
金钱 546 喜悦币
威望 0
人脉 0
阅读权限 100
注册 2004-7-13
来自 河源
状态 离线
[推荐阅读] 问一个索引性能的问题


QUOTE:
原帖由 fcicqbbs 于 2006-7-9 17:47 发表
请修改个地方
if(socket_read($socket, 15) == 'HTTP/1.1 200 OK') return true;
改为:
$readheader=socket_read($socket, 15);
if(($readheader == 'HTTP/1.1 200 OK') ||($readheader == 'HTTP/1.0 200 OK' ...
谢谢指正,将那句改为下面的可能会更好:
if(strpos(socket_read($socket, 15), '200')) return true;




五百多篇PHP学习资料
喜悦村BLOG
php团队接兼职项目QQ:80031807
PHP群:768844
2006-7-9 07:05 PM#5
查看资料  访问主页  Blog  发短消息  QQ  顶部
 
fcicqbbs
注册会员
Rank: 2



UID 74804
精华 0
积分 96
帖子 110
金钱 96 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2006-6-10
状态 离线
[推荐阅读] 循环的问题
$in .= "Connection: Closernrn";
可惜\又被吃了
2006-7-10 12:51 PM#6
查看资料  访问主页  发短消息  顶部
 
hanyang
乞丐




UID 74744
精华 0
积分 -11
帖子 282
金钱 -11 喜悦币
威望 0
人脉 0
阅读权限 1
注册 2006-6-9
状态 离线
[推荐阅读] 求教:关于日期范围数组
帮顶努力学习
2006-7-11 10:28 AM#7
查看资料  发短消息  QQ  顶部
 
戴红领巾小学生 (戴红领巾小学生)
新手上路
Rank: 1
中级会员



UID 21505
精华 0
积分 8
帖子 303
金钱 8 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2003-7-8
来自 广东
状态 离线
[推荐阅读] 广州亿码科技有限公司诚聘PHP程序员
有什么用的??看不懂
2006-7-14 10:57 AM#8
查看资料  访问主页  发短消息  QQ  顶部
 
吴广 (吴广)
论坛元老
Rank: 8Rank: 8
RuntimePHPExceptione


UID 63016
精华 0
积分 5154
帖子 277
金钱 5154 喜悦币
威望 0
人脉 0
阅读权限 90
注册 2005-1-8
状态 离线
[推荐阅读] 浩友网络招募PHP高手加盟!
问个 PHP的socket能实现持续连接吗? 论坛用socket连接163的SMTP发信效率低的吓人!



2006-7-16 12:21 AM#9
查看资料  发短消息  顶部
 
fcicqbbs
注册会员
Rank: 2



UID 74804
精华 0
积分 96
帖子 110
金钱 96 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2006-6-10
状态 离线
[推荐阅读] 请问做网站有必要使用framework吗??????
用pfsockopen.
(前提:apache,静态编译.)




doc
2006-7-17 12:20 PM#10
查看资料  访问主页  发短消息  顶部
     


  可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题 | 开通个人空间  


 


Powered by Discuz! 6.1.0  © 2001-2010 Comsenz Inc.
Processed in 0.026439 second(s), 6 queries

(冀ICP备05009913号) 管理员:sadly 邮箱/MSN: sadly@phpx.com QQ:824008(长隐) 清除 Cookies - - Archiver - WAP