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 相关文章推荐
DedeCMS 核心类TypeLink.class.php摘要笔记
Apr 07 PHP
php定时删除文件夹下文件(清理缓存文件)
Jan 23 PHP
解析php安全性问题中的:Null 字符问题
Jun 21 PHP
设置php页面编码的两种方法示例介绍
Mar 03 PHP
php解析字符串里所有URL地址的方法
Apr 03 PHP
浅析PHP中call user func()函数及如何使用call user func调用自定义函数
Nov 05 PHP
PHP中set error handler函数用法小结
Nov 11 PHP
Yii框架表单模型和验证用法
May 20 PHP
PHP中for循环与foreach的区别
Mar 06 PHP
PHP实现的redis主从数据库状态检测功能示例
Jul 20 PHP
PHP实现字符串翻转功能的方法【递归与循环算法】
Nov 03 PHP
解决PHP使用CURL发送GET请求时传递参数的问题
Oct 11 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获取数组中单列值的方法
2017/06/10 PHP
RR vs IO BO3 第二场2.13
2021/03/10 DOTA
用javascript判断IE版本号简单实用且向后兼容
2013/09/11 Javascript
把jQuery的类、插件封装成seajs的模块的方法
2014/03/12 Javascript
jQuery实现鼠标滚轮动态改变样式或效果
2015/01/05 Javascript
实例讲解JavaScript中instanceof运算符的用法
2016/06/08 Javascript
jquery代码规范让代码越来越好看
2017/02/03 Javascript
JS简单获取当前日期时间的方法(如:2017-03-29 11:41:10 星期四)
2017/03/29 Javascript
ES6入门教程之Iterator与for...of循环详解
2017/05/17 Javascript
node.js操作mysql简单实例
2017/05/25 Javascript
微信小程序promsie.all和promise顺序执行
2017/10/27 Javascript
浅谈Vue SSR 的 Cookies 问题
2017/11/20 Javascript
jquery 获取索引值在一定范围的列表方法
2018/01/25 jQuery
浅谈JS的原型和继承
2019/05/08 Javascript
微信公众号生成新浪短网址的实现(快速生成)
2019/08/18 Javascript
Vue实现简单计算器案例
2020/02/25 Javascript
Vue切换div显示隐藏,多选,单选代码解析
2020/07/14 Javascript
[43:43]完美世界DOTA2联赛PWL S2 FTD.C vs Rebirth 第一场 11.22
2020/11/24 DOTA
Linux下使用python调用top命令获得CPU利用率
2015/03/10 Python
在Python中使用swapCase()方法转换大小写的教程
2015/05/20 Python
python网络编程之文件下载实例分析
2015/05/20 Python
python实现数值积分的Simpson方法实例分析
2015/06/05 Python
基于Python __dict__与dir()的区别详解
2017/10/30 Python
Pyinstaller 打包exe教程及问题解决
2019/08/16 Python
MAC平台基于Python Appium环境搭建过程图解
2020/08/13 Python
AmazeUI 折叠面板的实现代码
2020/08/17 HTML / CSS
巴西家用小家电购物网站:Polishop
2016/08/07 全球购物
英国最受欢迎的母婴精品品牌:JoJo Maman BéBé
2021/02/17 全球购物
公共事业管理本科生求职信
2013/10/07 职场文书
产品促销活动策划书
2014/01/15 职场文书
股权收购意向书
2014/04/01 职场文书
5s标语大全
2014/06/23 职场文书
超市促销活动总结
2014/07/01 职场文书
行政人事专员岗位职责
2015/04/07 职场文书
python numpy中setdiff1d的用法说明
2021/04/22 Python
ORACLE数据库应用开发的三十个注意事项
2021/06/07 Oracle