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 删除无限级目录与文件代码共享
Nov 22 PHP
第七章 php自定义函数实现代码
Dec 30 PHP
PHP json_encode中文乱码问题的解决办法
Sep 09 PHP
PHP向socket服务器收发数据的方法
Jan 24 PHP
PHP浮点数精度问题汇总
May 13 PHP
PHP模板引擎Smarty中的保留变量用法分析
Apr 11 PHP
PHP微信公众号自动发送红包API
Jun 01 PHP
Docker 如何布置PHP开发环境
Jun 21 PHP
Yii2主题(Theme)用法详解
Jul 23 PHP
PHP实现十进制、二进制、八进制和十六进制转换相关函数用法分析
Apr 25 PHP
PHP调用微博接口实现微博登录的方法示例
Sep 22 PHP
在Laravel中实现使用AJAX动态刷新部分页面
Oct 15 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
PHP往XML中添加节点的方法
2015/03/12 PHP
总结PHP删除字符串最后一个字符的三种方法
2016/08/30 PHP
PHP获取HTTP body内容的方法
2018/12/31 PHP
PHP实现页面静态化深入讲解
2021/03/04 PHP
JavaScript异步加载浅析
2014/12/28 Javascript
如何使用HTML5地理位置定位功能
2015/04/27 Javascript
简介JavaScript中Math.LOG10E属性的使用
2015/06/14 Javascript
百度地图api如何使用
2015/08/03 Javascript
通用javascript代码判断版本号是否在版本范围之间
2015/11/29 Javascript
jQuery弹层插件jquery.fancybox.js用法实例
2016/01/22 Javascript
基于Bootstrap重置输入框内容按钮插件
2016/05/12 Javascript
微信小程序 Toast自定义实例详解
2017/01/20 Javascript
详解JavaScript按概率随机生成事件
2017/08/02 Javascript
Canvas放置反弹效果随机图形(实例)
2017/08/17 Javascript
详解vue-cli项目中的proxyTable跨域问题小结
2018/02/09 Javascript
详解Vue.js 作用域、slot用法(单个slot、具名slot)
2019/10/15 Javascript
javascript 使用sleep函数的常见方法详解
2020/04/26 Javascript
在vue中使用Echarts利用watch做动态数据渲染操作
2020/07/20 Javascript
jQuery使用hide()、toggle()函数实现相机品牌展示隐藏功能
2021/01/29 jQuery
python实现ip查询示例
2014/03/26 Python
用python做一个搜索引擎(Pylucene)的实例代码
2017/07/05 Python
Python制作exe文件简单流程
2019/01/24 Python
wxPython实现文本框基础组件
2019/11/18 Python
python statsmodel的使用
2020/12/21 Python
canvas实现圆绘制的示例代码
2019/09/11 HTML / CSS
什么是"引用"?申明和使用"引用"要注意哪些问题?
2016/03/03 面试题
社区综治宣传月活动总结
2014/07/02 职场文书
我心目中的好老师活动方案
2014/08/19 职场文书
个人批评与自我批评总结
2014/10/17 职场文书
罚站检讨书
2015/01/29 职场文书
团队执行力培训心得体会
2015/08/15 职场文书
广告文案的撰写技巧(实用干货)
2019/08/23 职场文书
python flask框架快速入门
2021/05/14 Python
python如何利用cv2模块读取显示保存图片
2021/06/04 Python
方法汇总:Python 安装第三方库常用
2022/04/26 Python
Nginx如何配置根据路径转发详解
2022/07/23 Servers