基于php socket(fsockopen)的应用实例分析

 更新时间:2013年06月02日 16:59:38   作者:  
本篇文章是对php socket(fsockopen)的应用实例进行了详细的分析介绍,需要的朋友参考下
fsockopen函数能够运用,首先要开启php.ini中的allow_url_open=on;
fsockopen是对socket客户端代码的封装,该函数中封装了socket_create,socket_connect。
服务器端代码:server.php
复制代码 代码如下:

<?php
error_reporting(E_ALL);
set_time_limit(0);
$address = '127.0.0.1';
$port = 10008;
//创建端口
if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) === false) {
echo "socket_create() failed:reason:" . socket_strerror(socket_last_error()) . "\n";
}
//绑定
if (socket_bind($sock, $address, $port) === false) {
echo "socket_bind() failed :reason:" . socket_strerror(socket_last_error($sock)) . "\n";
}
//监听
if (socket_listen($sock, 5) === false) {
echo "socket_bind() failed :reason:" . socket_strerror(socket_last_error($sock)) . "\n";
}
while (true) {
//得到一个链接
if (($msgsock = socket_accept($sock)) === false) {
echo "socket_accepty() failed :reason:".socket_strerror(socket_last_error($sock)) . "\n";
break;
}
//welcome 发送到客户端
$msg = "1.<font color='red'>server send:welcome</font><br/>";
socket_write($msgsock, $msg, strlen($msg)); //返回信息给客户端
echo 'read client message\n';
$buf = socket_read($msgsock, 8192); //获取客户端发送过来的信息
$talkback = "2.received message:$buf\n";
echo $talkback;
if (false === socket_write($msgsock, $talkback, strlen($talkback))) { //返回信息给客户端
echo "socket_write() failed reason:" . socket_strerror(socket_last_error($sock)) ."\n";
} else {
echo 'send success';
}
socket_close($msgsock);
}
socket_close($sock);

客户端代码:fsocket.php
复制代码 代码如下:

<?php
$fp = fsockopen("127.0.0.1", 10008, &$errno, &$errstr, 10);
if (!$fp) {
echo $errstr . " (". $errno . ")<br>n";
} else {
$in = "HEAD / http/1.1\r\n";
$in .= "HOST: localhost \r\n";
$in .= "Connection: close\r\n\r\n";
fputs($fp, $in);
while (!feof($fp)) {
echo fgets($fp, 128);
}
fclose($fp);
}

相关文章

  • PHP实现伪静态方法汇总

    PHP实现伪静态方法汇总

    PHP伪静态的使用主要是为了隐藏传递的参数名,下面给大家介绍php实现伪静态的方法,对php实现伪静态相关知识感兴趣的朋友一起学习吧
    2016-01-01
  • Laravel中简约却不简单的Macroable宏指令详解

    Laravel中简约却不简单的Macroable宏指令详解

    这篇文章主要给大家介绍了关于Laravel中简约却不简单的Macroable宏指令的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧
    2018-07-07
  • PHP与服务器文件系统的简单交互

    PHP与服务器文件系统的简单交互

    这篇文章主要介绍了PHP与服务器文件系统的简单交互的相关资料,非常不错,具有参考借鉴价值,感兴趣的朋友一起看看吧
    2016-10-10
  • php中的array_filter()函数的使用

    php中的array_filter()函数的使用

    php中的array_filter()函数用于筛选数组中的元素,并返回一个新的数组,新数组的元素是所有返回值为true的原数组元素,本文给大家介绍php中的array_filter()函数的使用,感兴趣的朋友跟随小编一起看看吧
    2023-08-08
  • Symfony页面的基本创建实例详解

    Symfony页面的基本创建实例详解

    这篇文章主要介绍了Symfony页面的基本创建实例详解,详细分析了Symfony页面的具体创建流程与注意事项,需要的朋友可以参考下
    2015-01-01
  • thinkphp四种url访问方式详解

    thinkphp四种url访问方式详解

    这篇文章主要介绍了thinkphp四种url访问方式,简单分析了ThinkPHPmvc相关概念并重点讲述了URL的四种访问方式,具有一定的参考借鉴价值,需要的朋友可以参考下
    2014-11-11
  • Yii使用find findAll查找出指定字段的实现方法

    Yii使用find findAll查找出指定字段的实现方法

    这篇文章主要介绍了Yii使用find findAll查找出指定字段的实现方法,非常实用的技巧,需要的朋友可以参考下
    2014-09-09
  • PHP查看SSL证书信息的方法

    PHP查看SSL证书信息的方法

    这篇文章给给大家介绍了如何利用PHP查看SSL证书信息,文中通过图文和示例给大家介绍,有需要朋友们可以参考借鉴,下面来一起看看吧。
    2016-09-09
  • laravel 查询数据库获取结果实现判断是否为空

    laravel 查询数据库获取结果实现判断是否为空

    今天小编就为大家分享一篇laravel 查询数据库获取结果实现判断是否为空,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-10-10
  • smarty模板引擎之分配数据类型

    smarty模板引擎之分配数据类型

    这篇文章主要介绍了smarty模板引擎之分配数据类型,实例分析了smarty模板引擎数据类型的使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-03-03

最新评论