PHP Socket网络操作类定义与用法示例


Posted in PHP onAugust 30, 2017

本文实例讲述了PHP Socket网络操作类定义与用法。分享给大家供大家参考,具体如下:

web前端测试:

<html>
<head>
  <title>test</title>
  <script>
  g_xmlHttpReq = new XMLHttpRequest();
  function onReplyCallback()
  {
    if(g_xmlHttpReq.readyState==4 && g_xmlHttpReq.status==200)
    {
      alert(g_xmlHttpReq.responseText);
    }
  }
  function on_stop_service()
  {
    var cmd = document.getElementById("inCmd").value;
    g_xmlHttpReq.open("GET","./service/main.php?cmd=" + cmd,true);
    g_xmlHttpReq.onreadystatechange=onReplyCallback;
    g_xmlHttpReq.send(null);
  }
  </script>
</head>
<body>
<input type="text" id="inCmd">
<hr>
<button onclick="on_stop_service()">关闭服务</button>
</body>
</html>

mysocket.php:

<?php
class Connector
{
  public static $instance=null;
  public $conn;
  private function __construct()
  {
      set_time_limit(0);
      $ip = '192.168.238.1';
      $port = 8888;
      if(($this->conn = socket_create(AF_INET,SOCK_STREAM,SOL_TCP)) < 0)
      {
        echo "socket_create() 失败的原因是:".socket_strerror($this->conn)."\n";
      }
      $result = socket_connect($this->conn, $ip, $port);
      if ($result < 0) {
        echo "socket_connect() failed.\nReason: ($result) " . socket_strerror($result) . "\n";
      }else {
        echo "连接OK\n";
      }
  }
  public static function getInstance()
  {
    if(is_null(self::$instance))
    {
      self::$instance = new Connector;
    }
    return self::$instance;
  }
  public function sendMsg($msg)
  {
    socket_write($this->conn,$msg);
  }
  public function getMsg()
  {
    $clients = array($this->conn);
    while(true)
    {
      $read = $clients;
      $wrSet = NULL;
      $errSet = NULL;
      if(socket_select($read, $wrSet,$errSet, 3) < 1)
      {
        continue;
      }
      foreach($read as $read_sock)
      {
        $data = @socket_read($read_sock,1024,PHP_BINARY_READ);
        socket_close($this->conn);
        return $data;
      }
    }
  }
}
?>

main.php(调用场所):

<?php
require_once('mysocket.php');
$con = Connector::getInstance();
$req = $_GET['cmd'];
$con->sendMsg($req);
$ret = $con->getMsg();
echo $ret;
?>

应用说明:

客户端ajax发起请求调用Php,然后php借助socket进一步发起请求给C++模块。

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
第十节--抽象方法和抽象类
Nov 16 PHP
php下获取Discuz论坛登录用户名、用户组、用户ID等信息的实现代码
Dec 29 PHP
windows下配置apache+php+mysql时出现问题的处理方法
Jun 20 PHP
php读取csc文件并输出
May 21 PHP
10个超级有用的PHP代码片段果断收藏
Sep 23 PHP
php注册审核重点解析(数据访问)
May 23 PHP
微信第三方登录(原生)demo【必看篇】
May 26 PHP
ThinkPHP框架实现的邮箱激活功能示例
Jun 15 PHP
浅谈laravel5.5 belongsToMany自身的正确用法
Oct 17 PHP
PHP数组对象与Json转换操作实例分析
Oct 22 PHP
jQuery+PHP实现图片上传并提交功能
Jul 27 PHP
[原创]php token使用与验证示例【测试可用】
Aug 30 #PHP
Laravel框架中VerifyCsrfToken报错问题的解决
Aug 30 #PHP
Laravel框架中Blade模板的用法示例
Aug 30 #PHP
php实现支持中文的文件下载功能示例
Aug 30 #PHP
利用PHPStorm如何开发Laravel应用详解
Aug 30 #PHP
Laravel 5.5 的自定义验证对象/类示例代码详解
Aug 29 #PHP
PHP单例模式与工厂模式详解
Aug 29 #PHP
You might like
php中关于普通表单多文件上传的处理方法
2011/03/25 PHP
有道搜索和IP138的IP的API接口(PHP应用)
2012/11/29 PHP
PHP return语句的另一个作用
2014/07/30 PHP
php面向对象中static静态属性和静态方法的调用
2015/02/08 PHP
PHP使用MPDF类生成PDF的方法
2015/12/08 PHP
浅析document.ready和window.onload的区别讲解
2013/12/18 Javascript
javascript使用定时函数实现跳转到某个页面
2013/12/25 Javascript
jQuery的3种请求方式$.post,$.get,$.getJSON
2014/03/28 Javascript
JS实现根据当前文字选择返回被选中的文字
2014/05/21 Javascript
浅谈JavaScript 的执行顺序
2015/08/07 Javascript
原生javascript实现分享到朋友圈功能 支持ios和android
2016/05/11 Javascript
AngularJS中实现动画效果的方法
2016/07/28 Javascript
nodejs的HTML分析利器node-jquery用法浅析
2016/11/08 NodeJs
Bootstrap基本样式学习笔记之表单(3)
2016/12/07 Javascript
Bootstrap显示与隐藏简单实现代码
2017/03/06 Javascript
react-native组件中NavigatorIOS和ListView结合使用的方法
2017/09/30 Javascript
JavaScript实现PC端横向轮播图
2020/02/07 Javascript
Element Input输入框的使用方法
2020/07/26 Javascript
原生JS运动实现轮播图
2021/01/02 Javascript
Python利用前序和中序遍历结果重建二叉树的方法
2016/04/27 Python
Python实现随机生成有效手机号码及身份证功能示例
2017/06/05 Python
numpy找出array中的最大值,最小值实例
2018/04/03 Python
Python 机器学习库 NumPy入门教程
2018/04/19 Python
详解Python3的TFTP文件传输
2018/06/26 Python
在Pycharm中项目解释器与环境变量的设置方法
2018/10/29 Python
Python CVXOPT模块安装及使用解析
2019/08/01 Python
djano一对一、多对多、分页实例代码
2019/08/16 Python
使用python 计算百分位数实现数据分箱代码
2020/03/03 Python
德国狗狗用品在线商店:Schecker
2017/03/17 全球购物
在线购买廉价折扣书籍和小说:BookOutlet.com
2018/02/19 全球购物
专科毕业生自我鉴定
2013/12/01 职场文书
化妆品店促销方案
2014/02/24 职场文书
绿色学校实施方案
2014/03/31 职场文书
总经理人事任命书
2014/06/05 职场文书
转正申请报告格式
2015/05/15 职场文书
Python 把两层列表展开平铺成一层(5种实现方式)
2021/04/07 Python