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编程网上资源导航
Oct 09 PHP
如何对PHP程序中的常见漏洞进行攻击(下)
Oct 09 PHP
PHP 验证码的实现代码
Jul 17 PHP
解析PHP多种序列化与反序列化的方法
Jun 06 PHP
php使用fsockopen函数发送post,get请求获取网页内容的方法
Nov 15 PHP
使用GD库生成带阴影文字的图片
Mar 27 PHP
基于php实现随机合并数组并排序(原排序)
Nov 26 PHP
thinkphp,onethink和thinkox中验证码不显示的解决方法分析
Jun 06 PHP
php验证身份证号码正确性的函数
Jul 20 PHP
Thinkphp3.2.3整合phpqrcode生成带logo的二维码
Jul 21 PHP
php实现异步将远程链接上内容(图片或内容)写到本地的方法
Nov 30 PHP
PHP中仿制 ecshop验证码实例
Jan 06 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 大数据量及海量数据处理算法总结
2011/05/07 PHP
destoon供应信息title调用出公司名称的方法
2014/08/22 PHP
CI分页类首页、尾页不显示的解决方法
2016/03/28 PHP
PHP十六进制颜色随机生成器功能示例
2017/07/24 PHP
ubutu 16.04环境下,PHP与mysql数据库,网页登录验证实例讲解
2017/07/20 PHP
提高网站信任度的技巧
2008/10/17 Javascript
深入理解JavaScript系列(35):设计模式之迭代器模式详解
2015/03/03 Javascript
nodejs实现遍历文件夹并统计文件大小
2015/05/28 NodeJs
JavaScript正则表达式之multiline属性的应用
2015/06/16 Javascript
jQuery实现滚动切换的tab选项卡效果代码
2015/08/26 Javascript
js实现左侧网页tab滑动门效果代码
2015/09/06 Javascript
JavaScript数据存储 Cookie篇
2016/07/02 Javascript
基于bootstrap风格的弹框插件
2016/12/28 Javascript
原生JS获取元素的位置与尺寸实现方法
2017/10/18 Javascript
Vue父子模版传值及组件传值的三种方法
2017/11/27 Javascript
Vue移动端实现图片上传及超过1M压缩上传
2019/12/23 Javascript
使用Taro实现小程序商城的购物车功能模块的实例代码
2020/06/05 Javascript
vue实现给div绑定keyup的enter事件
2020/07/31 Javascript
vue-cli 关闭热更新操作
2020/09/18 Javascript
[48:00]EG vs LGD 2018国际邀请赛淘汰赛BO3 第二场 8.26
2018/08/29 DOTA
python实现的简单窗口倒计时界面实例
2015/05/05 Python
分数霸榜! python助你微信跳一跳拿高分
2018/01/08 Python
Django2.1集成xadmin管理后台所遇到的错误集锦(填坑)
2018/12/20 Python
Python从函数参数类型引出元组实例分析
2019/05/28 Python
对Pytorch神经网络初始化kaiming分布详解
2019/08/18 Python
pandas的相关系数与协方差实例
2019/12/27 Python
Python爬虫获取豆瓣电影并写入excel
2020/07/31 Python
一款纯css3实现的鼠标悬停动画按钮
2014/12/29 HTML / CSS
数控加工专业毕业生自荐信
2013/09/27 职场文书
大专毕业生自我鉴定
2013/11/21 职场文书
协会周年庆活动方案
2014/08/26 职场文书
股权转让协议范本
2014/12/07 职场文书
艺术节开幕词
2015/01/28 职场文书
解决pycharm安装scrapy DLL load failed:找不到指定的程序的问题
2021/06/08 Python
PO模式在selenium自动化测试框架的优势
2022/03/20 Python
python数字图像处理之对比度与亮度调整示例
2022/06/28 Python