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和MySQL保存和输出图片
Oct 09 PHP
给多个地址发邮件的类
Oct 09 PHP
php中使用redis队列操作实例代码
Feb 07 PHP
PHP获取php,mysql,apche的版本信息示例代码
Jan 16 PHP
php使用array_rand()函数从数组中随机选择一个或多个元素
Apr 28 PHP
判断、添加和删除WordPress置顶文章的相关PHP函数小结
Dec 10 PHP
基于PHP实现数据分页显示功能
May 26 PHP
详解Laravel视图间共享数据与视图Composer
Aug 04 PHP
PHP 接入支付宝即时到账功能
Sep 18 PHP
php实现的统计字数函数定义与使用示例
Jul 26 PHP
thinkPHP5框架闭包函数与子查询传参用法示例
Aug 02 PHP
PHP多进程通信-消息队列使用
Mar 08 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
利用static实现表格的颜色隔行显示的代码
2007/09/02 PHP
PHP操作XML作为数据库的类
2010/12/19 PHP
php插入中文到sqlserver 2008里出现乱码的解决办法分享
2012/07/19 PHP
Thinkphp结合ajaxFileUpload实现异步图片传输示例
2017/03/13 PHP
jQuery 事件队列调整方法
2009/09/18 Javascript
Jquery Ajax学习实例5 向WebService发出请求,返回泛型集合数据的异步调用
2010/03/17 Javascript
jQuery下扩展插件和拓展函数的写法(匿名函数使用的典型例子)
2010/10/20 Javascript
JS弹出窗口代码大全(详细整理)
2012/12/21 Javascript
浅析jquery ajax异步调用方法中不能给全局变量赋值的原因及解决方法
2014/01/10 Javascript
js如何判断用户是在PC端和还是移动端访问
2014/04/24 Javascript
jquery 设置style:display的方法
2015/01/29 Javascript
编写高性能Javascript代码的N条建议
2015/10/12 Javascript
AngularJS Module方法详解
2015/12/08 Javascript
理解Javascript图片预加载
2016/02/23 Javascript
jQuery时间日期三级联动(推荐)
2016/11/27 Javascript
浅析vue数据绑定
2017/01/17 Javascript
AngularJS中控制器函数的定义与使用方法示例
2017/10/10 Javascript
seajs实现强制刷新本地缓存的方法分析
2017/10/16 Javascript
微信小程序实现简单文字跑马灯
2020/05/26 Javascript
js实现前端界面导航栏下拉列表
2020/08/27 Javascript
vue组件是如何解析及渲染的?
2021/01/13 Vue.js
python操作列表的函数使用代码详解
2017/12/28 Python
python 按照固定长度分割字符串的方法小结
2018/04/30 Python
Django REST Framework序列化外键获取外键的值方法
2019/07/26 Python
Python监听键盘和鼠标事件的示例代码
2020/11/18 Python
简历中自我评价范文3则
2013/12/14 职场文书
军校本科大学生自我评价
2014/01/14 职场文书
餐饮收银员岗位职责
2014/02/07 职场文书
政法学院毕业生求职信
2014/02/28 职场文书
物业保安员岗位职责
2014/03/14 职场文书
邮政竞聘演讲稿
2014/09/03 职场文书
2015年家长学校工作总结
2015/04/22 职场文书
企业党建工作总结2015
2015/05/26 职场文书
2016年党员创先争优公开承诺书
2016/03/25 职场文书
Python爬虫入门案例之爬取二手房源数据
2021/10/16 Python
详解nginx location指令
2022/01/18 Servers