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 相关文章推荐
玩转图像函数库―常见图形操作
Sep 03 PHP
WINDOWS服务器安装多套PHP的另类解决方案
Oct 09 PHP
计算2000年01月01日起到指定日的天数
Oct 09 PHP
php allow_url_include的应用和解释
Apr 22 PHP
纯php打造的tab选项卡效果代码(不用js)
Dec 29 PHP
php学习笔记 数组遍历实现代码
Jun 09 PHP
调试PHP程序的多种方法介绍
Nov 06 PHP
php中数据库连接方式pdo和mysqli对比分析
Feb 25 PHP
php的常量和变量实例详解
Jun 27 PHP
PHP7如何开启Opcode打造强悍性能详解
May 11 PHP
thinkPHP5框架实现基于ajax的分页功能示例
Jun 12 PHP
PHP时间处理类操作示例
Sep 05 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去掉字符串的最后一个字符附substr()的用法
2011/03/23 PHP
浅析使用Turck-mmcache编译来加速、优化PHP代码
2013/06/20 PHP
PHP多线程之内部多线程实例分析
2015/03/09 PHP
基于PHP微信红包的算法探讨
2016/07/21 PHP
PHP钩子与简单分发方式实例分析
2017/09/04 PHP
yii2.0整合阿里云oss删除单个文件的方法
2017/09/19 PHP
thinkPHP框架中执行事务的方法示例
2018/05/31 PHP
关于laravel5.5的定时任务详解(demo)
2019/10/23 PHP
javascript instanceof 与typeof使用说明
2010/01/11 Javascript
javascript 构建一个xmlhttp对象池合理创建和使用xmlhttp对象
2010/01/15 Javascript
一个XML格式数据转换为图表的例子
2010/02/09 Javascript
JQuery 将元素显示在屏幕的中央的代码
2010/02/27 Javascript
jQuery 表格插件整理
2010/04/27 Javascript
基于jquery &amp; json的省市区联动代码
2012/06/26 Javascript
script标签属性用type还是language
2015/01/21 Javascript
js仿苹果iwatch外观的计时器代码分享
2015/08/26 Javascript
在JSP中如何实现MD5加密的方法
2016/11/02 Javascript
使用vue的v-for生成table并给table加上序号的实例代码
2017/10/27 Javascript
vue+elementUi图片上传组件使用详解
2019/08/20 Javascript
node.JS的crypto加密模块使用方法详解(MD5,AES,Hmac,Diffie-Hellman加密)
2020/02/06 Javascript
python中assert用法实例分析
2015/04/30 Python
如何通过python实现人脸识别验证
2020/01/17 Python
Docker部署Python爬虫项目的方法步骤
2020/01/19 Python
Selenium常见异常解析及解决方案示范
2020/04/10 Python
keras topN显示,自编写代码案例
2020/07/03 Python
django表单中的按钮获取数据的实例分析
2020/07/31 Python
解决Windows下python和pip命令无法使用的问题
2020/08/31 Python
python selenium 获取接口数据的实现
2020/12/07 Python
伊莱克斯阿根廷网上商店:Tienda Electrolux
2021/03/08 全球购物
建筑经济管理专业求职信分享
2014/01/06 职场文书
不打扫卫生检讨书
2014/02/12 职场文书
2014新年元旦活动策划方案
2014/02/18 职场文书
《狮子和兔子》教学反思
2014/03/02 职场文书
社区综治工作汇报
2014/10/27 职场文书
小学语文复习计划
2015/01/19 职场文书
写给导师的自荐信
2015/03/06 职场文书