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中数据库单例模式的实现代码分享
Aug 21 PHP
PHP中怎样防止SQL注入分析
Oct 23 PHP
Laravel 4 初级教程之Pages、表单验证
Oct 30 PHP
PHP使用递归生成文章树
Apr 21 PHP
PHP 实现浏览记录并按日期分组
May 11 PHP
php中输出json对象的值(实现方法)
Mar 07 PHP
PHP mongodb操作类定义与用法示例【适合mongodb2.x和mongodb3.x】
Jun 16 PHP
PHP SESSION机制的理解与实例
Mar 22 PHP
PHP实现的pdo连接数据库并插入数据功能简单示例
Mar 30 PHP
Thinkphp5框架使用validate实现验证功能的方法
Aug 27 PHP
PHP程序员简单的开展服务治理架构操作详解(三)
May 14 PHP
PHP mkdir创建文件夹实现方法解析
Nov 13 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创建动态图像
2006/10/09 PHP
一个图形显示IP的PHP程序代码
2007/10/19 PHP
利用yahoo汇率接口实现实时汇率转换示例 汇率转换器
2014/01/14 PHP
php中的路径问题与set_include_path使用介绍
2014/02/11 PHP
在WordPress的后台中添加顶级菜单和子菜单的函数详解
2016/01/11 PHP
javascript实现二分查找法实现代码
2007/11/12 Javascript
js中将URL中的参数提取出来作为对象的实现代码
2011/08/16 Javascript
NodeJS学习笔记之Http模块
2015/01/13 NodeJs
详解Jquery实现ready和bind事件
2016/04/14 Javascript
JavaScript必知必会(六) delete in instanceof
2016/06/08 Javascript
JS阻止事件冒泡行为和闭包的方法
2016/06/16 Javascript
Angularjs 设置全局变量的方法总结
2016/10/20 Javascript
从零开始学习Node.js系列教程三:图片上传和显示方法示例
2017/04/13 Javascript
Angular2关于@angular/cli默认端口号配置的问题
2017/07/15 Javascript
H5基于iScroll实现下拉刷新和上拉加载更多
2017/07/18 Javascript
深入理解js 中async 函数的含义和用法
2018/05/13 Javascript
vue 录制视频并压缩视频文件的方法
2018/07/27 Javascript
JS typeof fn === 'function' &amp;&amp; fn()详解
2020/08/22 Javascript
IDEA配置jQuery, $符号不再显示黄色波浪线的问题
2020/10/09 jQuery
[01:01:36]Optic vs paiN 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
Python的批量远程管理和部署工具Fabric用法实例
2015/01/23 Python
Python中str.format()详解
2017/03/12 Python
python将处理好的图像保存到指定目录下的方法
2019/01/10 Python
Python numpy中矩阵的基本用法汇总
2019/02/12 Python
python爬虫之爬取百度音乐的实现方法
2019/08/24 Python
使用Python操作ArangoDB的方法步骤
2020/02/02 Python
PIL包中Image模块的convert()函数的具体使用
2020/02/26 Python
Python实现像awk一样分割字符串
2020/09/15 Python
python如何使用腾讯云发送短信
2020/09/17 Python
使用Python实现音频双通道分离
2020/12/25 Python
CSS3实现菜单悬停效果
2020/11/17 HTML / CSS
美国珠宝店:Helzberg Diamonds
2018/10/24 全球购物
商场端午节活动方案
2014/01/29 职场文书
《回乡偶书》教学反思
2014/04/12 职场文书
优秀教师主要事迹材料
2015/11/04 职场文书
tensorflow中的梯度求解及梯度裁剪操作
2021/05/26 Python