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函数
Dec 06 PHP
php面向对象全攻略 (十) final static const关键字的使用
Sep 30 PHP
php 无限级数据JSON格式及JS解析
Jul 17 PHP
php自动加载机制的深入分析
Jun 08 PHP
PHP设计模式之结构模式的深入解析
Jun 13 PHP
PHP类的反射用法实例
Nov 03 PHP
php数组保存文本与文本反编成数组实例
Nov 13 PHP
php检查字符串中是否有外链的方法
Jul 29 PHP
详解PHP对象的串行化与反串行化
Jan 24 PHP
joomla实现注册用户添加新字段的方法
May 05 PHP
mysqli扩展无法在PHP7下升级问题的解决
Sep 10 PHP
PHP并发场景的三种解决方案代码实例
Feb 27 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
Django中通过定时任务触发页面静态化的处理方式
2018/08/29 PHP
Mootools 1.2教程(21)——类(二)
2009/09/15 Javascript
40个有创意的jQuery图片和内容滑动及弹出插件收藏集之二
2011/12/31 Javascript
JQuery筛选器全系列介绍
2013/08/27 Javascript
JS删除字符串中重复字符方法
2014/03/09 Javascript
原生JavaScript实现动态省市县三级联动下拉框菜单实例代码
2016/02/03 Javascript
利用jquery制作滚动到指定位置触发动画
2016/03/26 Javascript
Jquery获取当前城市的天气信息
2016/08/05 Javascript
浅谈JavaScript的计时器对象
2016/12/26 Javascript
JavaScript选择排序算法原理与实现方法示例
2018/08/06 Javascript
jquery实现二级导航下拉菜单效果实例
2019/05/14 jQuery
vue-element-admin 菜单标签失效的解决方式
2019/11/12 Javascript
jQuery模仿ToDoList实现简单的待办事项列表
2019/12/30 jQuery
Vue+Vant 图片上传加显示的案例
2020/11/03 Javascript
[05:06]TI4西雅图DOTA2前线报道 海涛密探LGD训练
2014/07/09 DOTA
Python程序设计入门(2)变量类型简介
2014/06/16 Python
Python库urllib与urllib2主要区别分析
2014/07/13 Python
Python中使用装饰器时需要注意的一些问题
2015/05/11 Python
python运行时间的几种方法
2016/06/17 Python
基于python socketserver框架全面解析
2017/09/21 Python
python 生成器和迭代器的原理解析
2019/10/12 Python
Python unittest生成测试报告过程解析
2020/09/08 Python
英国最出名高街品牌:Forever Unique
2018/02/24 全球购物
英国家居用品和家居装饰品购物网站:Cox & Cox
2019/08/25 全球购物
设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。
2014/12/30 面试题
Java软件工程师综合面试题笔试题
2013/09/08 面试题
化学相关工作求职信
2013/10/02 职场文书
求职自荐信
2013/12/14 职场文书
历史专业个人求职信分享
2013/12/20 职场文书
学生周末回家住宿长期请假条
2014/02/15 职场文书
企业党支部工作总结2015
2015/05/21 职场文书
伊索寓言读书笔记
2015/06/30 职场文书
MySQL系列之七 MySQL存储引擎
2021/07/02 MySQL
sql server 累计求和实现代码
2022/02/28 SQL Server
MutationObserver在页面水印实现起到的作用详解
2022/07/07 Javascript
SQL bool盲注和时间盲注详解
2022/07/23 SQL Server