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 相关文章推荐
php 执行系统命令的方法
Jul 07 PHP
在Windows系统上安装PHP运行环境文字教程
Jul 19 PHP
PHP操作文件类的函数代码(文件和文件夹创建,复制,移动和删除)
Nov 10 PHP
php记录代码执行时间(实现代码)
Jul 05 PHP
CentOS 6.3下安装PHP xcache扩展模块笔记
Sep 10 PHP
php创建无限级树型菜单
Nov 05 PHP
PHP二维数组矩形转置实例
Jul 20 PHP
Laravel5.1自定义500错误页面示例
Oct 09 PHP
简单实现PHP留言板功能
Dec 21 PHP
php使用mysqli和pdo扩展,测试对比mysql数据库的执行效率完整示例
May 09 PHP
php 实现简单的登录功能示例【基于thinkPHP框架】
Dec 02 PHP
PHP优化之批量操作MySQL实例分析
Apr 23 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设计模式 Delegation(委托模式)
2011/06/26 PHP
PHP获取用户的浏览器与操作系统信息的代码
2012/09/04 PHP
php中的curl使用入门教程和常见用法实例
2014/04/10 PHP
递归实现php数组转xml的代码分享
2015/05/14 PHP
javascript获取网页中指定节点的父节点、子节点的方法小结
2013/04/24 Javascript
jquery实现可拖拽弹出层特效
2015/01/04 Javascript
jQuery实现contains方法不区分大小写的方法
2015/02/13 Javascript
jQuery动画效果图片轮播特效
2016/01/12 Javascript
Node.js模块封装及使用方法
2016/03/06 Javascript
Node.js返回JSONP详解
2016/05/18 Javascript
浅析Node.js实现HTTP文件下载
2016/08/05 Javascript
微信小程序中实现一对多发消息详解及实例代码
2017/02/14 Javascript
详解如何在angular2中获取节点
2017/11/23 Javascript
Nuxt升级2.0.0时出现的问题(小结)
2018/10/08 Javascript
浅谈webpack+react多页面开发终极架构
2018/11/11 Javascript
详解JavaScript的变量
2019/04/04 Javascript
利用不到200行代码写一款属于你自己的js类库
2019/07/08 Javascript
vue项目中监听手机物理返回键的实现
2020/01/18 Javascript
electron 如何将任意资源打包的方法步骤
2020/04/16 Javascript
vue+axios全局添加请求头和参数操作
2020/07/24 Javascript
Python中遇到的小问题及解决方法汇总
2017/01/11 Python
Python Django实现layui风格+django分页功能的例子
2019/08/29 Python
美国网上订购鲜花:FTD
2016/09/23 全球购物
台湾生鲜宅配:大口市集
2017/10/14 全球购物
英国票务网站:Ticketmaster英国
2018/08/27 全球购物
高级运动鞋:GREATS
2019/07/19 全球购物
阿联酋航空丹麦官方网站:Emirates DK
2019/08/25 全球购物
中间件的定义
2016/08/09 面试题
知识竞赛活动方案
2014/02/18 职场文书
电子商务专业自荐信
2014/06/02 职场文书
私人房屋买卖协议书
2014/10/04 职场文书
2015年城管执法工作总结
2015/07/23 职场文书
大学生安全教育心得体会
2016/01/15 职场文书
Python爬虫基础之爬虫的分类知识总结
2021/05/13 Python
分布式锁为什么要选择Zookeeper而不是Redis?看完这篇你就明白了
2021/05/21 Redis
python实现手机推送 代码也就10行左右
2022/04/12 Python