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 相关文章推荐
我的论坛源代码(八)
Oct 09 PHP
mysql 字段类型说明
Apr 27 PHP
Ext.data.PagingMemoryProxy分页一次性读取数据的实现代码
Apr 07 PHP
完美实现GIF动画缩略图的php代码
Jan 02 PHP
php中设置多级目录session的问题
Aug 08 PHP
取得单条网站评论以数组形式进行输出
Jul 28 PHP
分享PHP守护进程类
Dec 30 PHP
基于php(Thinkphp)+jquery 实现ajax多选反选不选删除数据功能
Feb 24 PHP
[原创]php正则删除img标签的方法示例
May 27 PHP
thinkPHP框架实现生成条形码的方法示例
Jun 06 PHP
如何让PHP编码更加好看利于阅读
May 12 PHP
PHP实现计算器小功能
Aug 28 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
Syphon 使用方法
2021/03/03 冲泡冲煮
php上传文件中文文件名乱码的解决方法
2013/11/01 PHP
PHP匿名函数和use子句用法实例
2016/03/16 PHP
PHP命名空间namespace及use的简单用法分析
2018/08/03 PHP
tp5.1 框架数据库常见操作详解【添加、删除、更新、查询】
2020/05/26 PHP
PHP+Redis链表解决高并发下商品超卖问题(实现原理及步骤)
2020/08/03 PHP
js压缩利器
2007/02/20 Javascript
js+CSS 图片等比缩小并垂直居中实现代码
2008/12/01 Javascript
JavaScript中判断函数、变量是否存在
2015/06/10 Javascript
JS实现的仿东京商城菜单、仿Win右键菜单及仿淘宝TAB特效合集
2015/09/28 Javascript
一道常被人轻视的web前端常见面试题(JS)
2016/02/15 Javascript
关于List.ToArray()方法的效率测试
2016/09/30 Javascript
文件上传插件SWFUpload的使用指南
2016/11/29 Javascript
简单实现Bootstrap标签页
2020/08/09 Javascript
JS正则表达式之非捕获分组用法实例分析
2016/12/28 Javascript
基于jQuery制作小图标上下滑动特效
2017/01/18 Javascript
Thinkphp5微信小程序获取用户信息接口的实例详解
2017/09/26 Javascript
微信小程序Page中data数据操作和函数调用方法
2019/05/08 Javascript
深入了解JavaScript 私有化
2019/05/30 Javascript
js实现无缝轮播图
2020/03/09 Javascript
[01:02:30]Mineski vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第三场 8.22
2019/09/05 DOTA
用Python将一个列表分割成小列表的实例讲解
2018/07/02 Python
python实现Dijkstra静态寻路算法
2019/01/17 Python
python实现AES加密和解密
2019/03/27 Python
python装饰器代替set get方法实例
2019/12/19 Python
python 制作网站筛选工具(附源码)
2021/01/21 Python
西班牙手机之家:Phone House
2018/10/18 全球购物
幼儿园园长岗位职责
2013/11/26 职场文书
优秀学生干部推荐材料
2014/02/03 职场文书
yy婚礼主持词
2014/03/14 职场文书
竞选部长演讲稿
2014/04/26 职场文书
个人融资协议书
2014/10/02 职场文书
教师师德师风整改措施
2014/10/24 职场文书
2016元旦晚会主持词开场白和结束语
2015/12/04 职场文书
5种 JavaScript 方式实现数组扁平化
2021/10/05 Javascript
基于angular实现树形二级表格
2021/10/16 Javascript