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 相关文章推荐
在任意字符集下正常显示网页的方法一
Apr 01 PHP
解析php中两种缩放图片的函数,为图片添加水印
Jun 14 PHP
3个PHP多维数组转为一维数组的方法实例
Mar 13 PHP
php使用glob函数快速查询指定目录文件的方法
Nov 15 PHP
php中heredoc与nowdoc介绍
Dec 25 PHP
php实现的简单日志写入函数
Mar 31 PHP
Smarty中的注释和截断功能介绍
Apr 09 PHP
基于OpenCart 开发支付宝,财付通,微信支付参数错误问题
Oct 01 PHP
linux下php上传文件注意事项
Jun 11 PHP
基于thinkPHP3.2实现微信接入及查询token值的方法
Apr 18 PHP
基于PHP实现栈数据结构和括号匹配算法示例
Aug 10 PHP
PHP设计模式之工厂方法设计模式实例分析
Apr 25 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
Yii框架视图、视图布局、视图数据块操作示例
2019/10/14 PHP
JavaScript 对话框和状态栏使用说明
2009/10/25 Javascript
JS函数验证总结(方便js客户端输入验证)
2010/10/29 Javascript
jWiard 基于JQuery的强大的向导控件介绍
2011/10/28 Javascript
select标记美化--JS式插件、后期加载
2013/04/01 Javascript
在JavaScript中重写jQuery对象的方法实例教程
2014/08/25 Javascript
jQuery学习笔记之创建DOM元素
2015/01/19 Javascript
JavaScript如何动态创建table表格
2020/08/02 Javascript
学习javascript面向对象 理解javascript原型和原型链
2016/01/04 Javascript
BootStrap的alert提示框的关闭后再显示怎么解决
2016/05/17 Javascript
微信小程序 引用其他js文件实现代码
2017/02/22 Javascript
详解打造 Vue.js 可复用组件
2017/03/24 Javascript
NodeJS处理Express中异步错误
2017/03/26 NodeJs
说说Vuex的getters属性的具体用法
2019/04/15 Javascript
VUE单页面切换动画代码(全网最好的切换效果)
2019/10/31 Javascript
JS获取一个字符串中指定字符串第n次出现的位置
2021/02/10 Javascript
[02:15]2014DOTA2国际邀请赛 专访LGD.lin小兔子是大腿
2014/07/14 DOTA
[01:17:12]职来职往完美电竞专场
2014/09/18 DOTA
[02:08]什么藏在DOTA2 TI9“小紫本”里?斧王历险记告诉你!
2019/05/17 DOTA
python转换摩斯密码示例
2014/02/16 Python
python输出100以内的质数与合数实例代码
2018/07/08 Python
详解Python用户登录接口的方法
2019/04/17 Python
Python+pyplot绘制带文本标注的柱状图方法
2019/07/08 Python
tensorflow:指定gpu 限制使用量百分比,设置最小使用量的实现
2020/02/06 Python
django之导入并执行自定义的函数模块图解
2020/04/01 Python
Tensorflow卷积实现原理+手写python代码实现卷积教程
2020/05/22 Python
详解通过变换矩阵实现canvas的缩放功能
2019/01/14 HTML / CSS
Moda Italia荷兰:意大利男士服装
2019/08/31 全球购物
中学生差生评语
2014/01/30 职场文书
医学生就业推荐表自我鉴定
2014/03/26 职场文书
党课培训主持词
2014/04/01 职场文书
党的群众路线教育实践活动总结报告
2014/04/28 职场文书
离婚协议书范本样本
2014/08/19 职场文书
护士自荐信范文
2015/03/25 职场文书
祝福语集锦:送给闺蜜的生日祝福语
2019/10/08 职场文书
Java详细解析==和equals的区别
2022/04/07 Java/Android