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 相关文章推荐
php5.2.0内存管理改进
Jan 22 PHP
PHP学习之数组值的操作
Apr 17 PHP
PHP三元运算符的结合性介绍
Jan 10 PHP
PHP中的cookie不用刷新就生效的方法
Feb 04 PHP
使用php测试硬盘写入速度示例
Jan 27 PHP
php实现用于验证所有类型的信用卡类
Mar 24 PHP
php通过分类列表产生分类树数组的方法
Apr 20 PHP
PHP IDE phpstorm 常用快捷键
May 18 PHP
Yii rules常用规则示例
Mar 15 PHP
PHP生成指定范围内的N个不重复的随机数
Mar 18 PHP
Mac下快速搭建PHP开发环境步骤详解
May 05 PHP
YII2框架中ActiveDataProvider与GridView的配合使用操作示例
Mar 18 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
Windows 下的 PHP-PEAR 安装方法
2010/11/20 PHP
PHP定义字符串的四种方式详解
2018/02/06 PHP
Aster vs KG BO3 第三场2.19
2021/03/10 DOTA
一个很简单的jquery+xml+ajax的无刷新树结构(无css,后台是c#)
2010/06/02 Javascript
jquery插件之easing 动态菜单
2010/08/21 Javascript
js 中 document.createEvent的用法
2010/08/29 Javascript
jqTransform form表单美化插件使用方法
2012/07/05 Javascript
修改file按钮的默认样式实现代码
2013/04/23 Javascript
JavaScript中number转换成string介绍
2014/12/31 Javascript
EasyUI折叠表格层次显示detailview详解及实例
2016/12/28 Javascript
EasyUI Tree树组件无限循环的解决方法
2017/09/27 Javascript
vue项目中vue-i18n和element-ui国际化开发实现过程
2018/04/25 Javascript
微信小程序按钮点击跳转页面详解
2019/05/06 Javascript
为Python程序添加图形化界面的教程
2015/04/29 Python
Python3指定路径寻找符合匹配模式文件
2015/05/22 Python
利用Python实现网络测试的脚本分享
2017/05/26 Python
python实现SOM算法
2018/02/23 Python
selenium+python实现自动化登录的方法
2018/09/04 Python
python实现几种归一化方法(Normalization Method)
2019/07/31 Python
解决Atom安装Hydrogen无法运行python3的问题
2019/08/28 Python
Python Opencv提取图片中某种颜色组成的图形的方法
2019/09/19 Python
Python爬虫使用浏览器cookies:browsercookie过程解析
2019/10/22 Python
python os.path.isfile()因参数问题判断错误的解决
2019/11/29 Python
如何理解python面向对象编程
2020/06/01 Python
浅谈Python中的模块
2020/06/10 Python
Mio Skincare英国官网:身体紧致及孕期身体护理
2018/08/19 全球购物
Etam俄罗斯:法国女士内衣和家居服网上商店
2019/10/30 全球购物
SheIn沙特阿拉伯:女装在线
2020/03/23 全球购物
请介绍一下WSDL的文档结构
2013/03/17 面试题
初婚未育未抱养证明
2014/01/12 职场文书
总经理助理的职责
2014/03/14 职场文书
《鸟岛》教学反思
2014/04/26 职场文书
正风肃纪剖析材料
2014/09/30 职场文书
2014年语文教学工作总结
2014/12/17 职场文书
2015应届毕业生自荐信范文
2015/03/05 职场文书