首页|操作系统|软件开发|网页制作|媒体动画|数据库|ASP教程|ASP.NET教程|PHP教程|JSP教程|XML教程|建站资料|软件学院|行业资讯|平面设计|网络安全|晒IT论坛|IT人才
  位置: 晒IT >> PHP教程 >> PHP提高教程 >> 正文
 
 
PHP的Socket函数参考
PHP的Socket函数参考
 
 
    //timeout after 5 seconds
    socket_set_option($socket, SOL_SOCKET,
        SO_RCVTIMEO, array('sec'=>5,'usec'=>0));
    //connect to the RtCW master server
    if(!socket_connect($socket, 'wolfmaster.idsoftware.com', 27950))
    {
        print("Couldn't connect: " .
            socket_strerror(socket_last_error()) . "\n");
    }
    //send request for servers
    socket_write($socket, "\xFF\xFF\xFF\xFFgetservers\x00");
    //get servers
    $server = array();
    while(FALSE !== ($line = @socket_read($socket, 4096)))
    {
        //parse data
        for($i=22; ($i+5) < strlen($line); $i += 7)
        {
            $ip = ord(substr($line, $i+1, 1)) . '.' .
                ord(substr($line, $i+2, 1)) . '.' .
                ord(substr($line, $i+3, 1)) . '.' .
                ord(substr($line, $i+4, 1));
            $port = (ord(substr($line, $i+5, 1)) * 256) +
                ord(substr($line, $i+6, 1));
            $server[] = array('ip'=>$ip, 'port'=>$port);
        }
    }
    print("<h1>" . count($server) . " Servers</h1>\n");
    //loop over servers, getting status
    foreach($server as $s)
    {
        print("<h1>{$s['ip']}:{$s['port']}</h1>\n");
        //connect to RtCW server
        if(!socket_connect($socket, $s['ip'], $s['port']))
        {
            print("<p>\n" .
                socket_strerror(socket_last_error()) .
                "\n</p>\n");
            continue;
        }
        //send request for status
        socket_write($socket, "\xFF\xFF\xFF\xFFgetstatus\x00");
        //get status from server
        if(FALSE === ($line = @socket_read($socket, 1024)))
        {
            print("<p>\n" .
                socket_strerror(socket_last_error()) .
                "\n</p>\n");
            continue;
        }
        $part = explode("\n", $line);
        //settings are in second line separated by backslashes
        $setting = explode("\\", $part[1]);
        print("<h2>Configuration</h2>\n");
        print("<p>\n");
        for($s=1; $s < count($setting); $s += 2)
        {
            print("\t\t{$setting[$s]} = {$setting[$s+1]}<br>\n");
        }
        print("</p>\n");
        print("<h2>Players</h2>\n");
        $lastPlayer = count($part) - 1;
        for($p=2; $p < $lastPlayer; $p++)
        {
            $player = explode(" ", $part[$p]);
            print("{$player[2]} Score={$player[0]} " .
                "Ping={$player[1]}<br>\n");
        }
        print("</p>\n");
        ob_flush();
    }
    print("</table>\n");
  • 上一篇: header()函数使用说明
  • 下一篇: PHP和Socket
  •  告诉好友  打印此文 关闭窗口 返回顶部
     
    热点文章
     
     
    推荐文章
     
     
    相关文章

    | 设为首页 | 加入收藏 | 联系我们 | 友情链接 | 诚聘英才 |
    Copyright© 2008 ShaiIT.Com .All Rights Reserved
    下载alexa工具,提升您的网站排名