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 处理TXT文件(打开/关闭/检查/读取)
May 13 PHP
探讨如何把session存入数据库
Jun 07 PHP
在PHP上显示JFreechart画的统计图方法
Nov 03 PHP
从PHP的源码中深入了解stdClass类
Apr 18 PHP
Zend Framework教程之配置文件application.ini解析
Mar 10 PHP
php版微信公众平台实现预约提交后发送email的方法
Sep 26 PHP
PHP开发中解决并发问题的几种实现方法分析
Nov 13 PHP
PHP多线程模拟实现秒杀抢单
Feb 07 PHP
PHP区块查询实现方法分析
May 12 PHP
PHP封装的非对称加密RSA算法示例
May 28 PHP
Laravel5.4框架使用socialite实现github登录的方法
Mar 20 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
漫威DC御用漫画家去世 他的表情包曾走红网络
2020/04/09 欧美动漫
php开发工具之vs2005图解
2008/01/12 PHP
php学习笔记(三)操作符与控制结构
2011/08/06 PHP
php函数指定默认值方法的小例子
2013/12/04 PHP
curl实现站外采集的方法和技巧
2014/01/31 PHP
php递归删除目录下的文件但保留的实例分享
2014/05/10 PHP
学习php设计模式 php实现装饰器模式(decorator)
2015/12/07 PHP
JavaScript 中的replace方法说明
2007/04/13 Javascript
前端开发必须知道的JS之原型和继承
2010/07/06 Javascript
hover的用法及live的用法介绍(鼠标悬停效果)
2013/03/29 Javascript
js 触发select onchange事件代码
2014/03/20 Javascript
Yii2使用Bootbox插件实现自定义弹窗
2015/04/02 Javascript
JS实现左右拖动改变内容显示区域大小的方法
2015/10/13 Javascript
Js实现简单的小球运动特效
2016/02/18 Javascript
jQuery实现可以编辑的表格实例详解【附demo源码下载】
2016/07/09 Javascript
jQuery实现手机上输入后隐藏键盘功能
2017/01/04 Javascript
js判断节假日实例代码
2017/12/27 Javascript
小程序实现发表评论功能
2018/07/06 Javascript
JavaScript基于对象方法实现数组去重及排序操作示例
2018/07/10 Javascript
vue中v-for通过动态绑定class实现触发效果
2018/12/06 Javascript
实现vuex原理的示例
2020/10/21 Javascript
[02:08:58]2014 DOTA2国际邀请赛中国区预选赛 Ne VS CIS
2014/05/22 DOTA
使用Python神器对付12306变态验证码
2016/01/05 Python
Python爬虫实现获取动态gif格式搞笑图片的方法示例
2018/12/24 Python
python文件写入write()的操作
2019/05/14 Python
Python requests模块session代码实例
2020/04/14 Python
keras中epoch,batch,loss,val_loss用法说明
2020/07/02 Python
Python中的面向接口编程示例详解
2021/01/17 Python
全球最大的房车租赁市场:Outdoorsy
2018/09/19 全球购物
美国相机和电子产品零售商:Beach Camera
2020/11/26 全球购物
网络工程系信息安全技术专业大学生求职信
2013/10/22 职场文书
通信工程毕业生自荐信
2013/11/01 职场文书
项目投资建议书
2014/05/16 职场文书
英语复习计划
2015/01/19 职场文书
酒会邀请函
2015/01/31 职场文书
剖析后OpLog订阅MongoDB的数据变更就没那么难了
2022/02/24 MongoDB