浅析PHP Socket技术

yipeiwu_com7年前PHP代码库

phpsocketSocket位于TCP/IP协议的传输控制协议,提供客户-服务器模式的异步通信,即客户向服务器发出服务请求,服务器接收到请求后,提供相应的反馈或服务!我练习了一个最基本的例子:

使用并发起一个阻塞式(block)连接,即服务器如果不返回数据流,则一直保持连接状态,一旦有数据流传入,取得内容后就立即断开连接。代码如下:

复制代码 代码如下:

<?php
$host = www.sohu.com; //这个地址随便,用新浪的也行,主要是测试用,哪个无所谓
$page = "/index.html";
$port = 80;
$request = "GET $page HTTP/1.1\r\n";
$request .= "Host: $host\r\n";
//$request .= "Referer:$host\r\n";
$request .= "Connection: close\r\n\r\n";
//允许连接的超时时间为1.5秒
$connectionTimeout = 1.5;
//允许远程服务器2秒钟内完成回应
$responseTimeout = 2;
//建立一个socket连接
$fp = fsockopen($host, $port, $errno, $errstr, $connectionTimeout);
if (!$fp) {
    throw new Exception("Connection to $hostfailed:$errstr");
} else {
    stream_set_blocking($fp, true);
    stream_set_timeout($fp, $responseTimeout);
}
//发送请求字符串
fwrite($fp, $request);
//取得返回的数据流内容
$content = stream_get_contents($fp);
echo $content;
$meta = stream_get_meta_data($fp);
if ($meta['timed_out']) {
    throw new Exception("Responsefrom web services server timed out.");
}
//关闭Socket连接
fclose($fp);
?>

相关文章

PHP更安全的密码加密机制Bcrypt详解

前言 我们常常为了避免在服务器受到攻击,数据库被拖库时,用户的明文密码不被泄露,一般会对密码进行单向不可逆加密——哈希。 常见的方式是: 哈希方式...

php实现通过cookie换肤的方法

本文实例讲述了php实现通过cookie换肤的方法。分享给大家供大家参考。具体如下: saveStyleSheet.php页面如下: <?php function s...

mongodb和php的用法详解

Mognodb数据库连接. 默认格式 $m = new Mongo(); //这里采用默认连接本机的27017端口,当然也可以连接远程主机如 192.168.0.4:27017,如...

php可生成缩略图的文件上传类实例

本文实例讲述了php可生成缩略图的文件上传类及其用法。分享给大家供大家参考。具体实现方法如下: 类文件调用方法如下: 复制代码 代码如下:<?php if ($_GET[...

php设计模式 Strategy(策略模式)

php设计模式 Strategy(策略模式)

抽象策略(Strategy)角色:定义所有支持的算法的公共接口。通常是以一个接口或抽象来实现。Context使用这个接口来调用其ConcreteStrategy定义的算法。 具体策略(C...