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 23 PHP
Php无限级栏目分类读取的实现代码
Feb 19 PHP
PHP中使用file_get_contents post数据代码例子
Feb 13 PHP
php简单实现屏蔽指定ip段用户的访问
Apr 29 PHP
php比较两个字符串长度的方法
Jul 13 PHP
PHP实现Unicode编码相互转换的方法示例
Nov 17 PHP
PHP封装的XML简单操作类完整实例
Nov 13 PHP
php数组和链表的区别总结
Sep 20 PHP
php操作redis常见方法示例【key与value操作】
Apr 14 PHP
PHP操作Redis常用命令的实例详解
Dec 23 PHP
PHP7 windows支持
Mar 09 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
阿拉伯的咖啡与水烟
2021/03/03 咖啡文化
火车头采集器3.0采集图文教程
2007/03/17 PHP
PHP常量使用的几个需要注意的地方(谨慎使用PHP中的常量)
2014/09/12 PHP
一个cssQuery对象 javascript脚本实现代码
2009/07/21 Javascript
jquerymobile checkbox及时刷新才能获取其准确值
2012/04/14 Javascript
Javascript图像处理—虚拟边缘介绍及使用方法
2012/12/27 Javascript
JSON 数字排序多字段排序介绍
2013/09/18 Javascript
js实现全屏漂浮广告移入光标停止移动
2013/12/02 Javascript
JQuery显示隐藏页面元素的方法总结
2015/04/16 Javascript
详解JavaScript中的Unescape()和String() 函数
2015/11/09 Javascript
Angular 2应用的8个主要构造块有哪些
2016/10/17 Javascript
JavaScript中Require调用js的实例分享
2017/10/27 Javascript
基于Vue、Vuex、Vue-router实现的购物商城(原生切换动画)效果
2018/01/09 Javascript
JavaScript引用类型Date常见用法实例分析
2018/08/08 Javascript
Vue.js 图标选择组件实践详解
2018/12/03 Javascript
Element input树型下拉框的实现代码
2018/12/21 Javascript
Vue使用lodop实现打印小结
2019/07/06 Javascript
Layui实现带查询条件的分页
2019/07/27 Javascript
layui自己添加图片按钮并点击跳转页面的例子
2019/09/14 Javascript
vue用BMap百度地图实现即时搜索功能
2019/09/26 Javascript
javascript 关于赋值、浅拷贝、深拷贝的个人理解
2019/11/01 Javascript
浅谈Vue使用Elementui修改默认的最快方法
2020/12/05 Vue.js
Python collections模块实例讲解
2014/04/07 Python
PyCharm代码整体缩进,反向缩进的方法
2018/06/25 Python
一篇文章搞懂Python的类与对象名称空间
2018/12/10 Python
Django实现文件上传和下载功能
2019/10/06 Python
Python+OpenCV 实现图片无损旋转90°且无黑边
2019/12/12 Python
德购商城:德国进口直邮商城
2017/06/13 全球购物
小学生植树节活动总结
2014/07/04 职场文书
2014年财政所工作总结
2014/11/22 职场文书
党员自我评价范文2015
2015/03/03 职场文书
党支部对转正的意见
2015/06/02 职场文书
城南旧事观后感
2015/06/11 职场文书
聊一聊Redis与MySQL双写一致性如何保证
2021/06/26 Redis
QT连接MYSQL数据库的详细步骤
2021/07/07 MySQL
js作用域及作用域链工作引擎
2022/07/07 Javascript