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 print类函数使用总结
Jun 25 PHP
PHP字符串处理的10个简单方法
Jun 30 PHP
献给php初学者(入门学习经验谈)
Oct 12 PHP
php 解决旧系统 查出所有数据分页的类
Aug 27 PHP
php中如何防止表单的重复提交
Aug 02 PHP
Zend Framework动作助手Redirector用法实例详解
Mar 05 PHP
Zend Framework教程之Zend_Db_Table用法详解
Mar 21 PHP
form表单传递数组数据、php脚本接收的实例
Feb 09 PHP
PHP简单实现模拟登陆功能示例
Sep 15 PHP
thinkPHP5框架auth权限控制类与用法示例
Jun 12 PHP
PHP数据源架构模式之表入口模式实例分析
Jan 23 PHP
php中pcntl_fork详解
Apr 01 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
一个程序下载的管理程序(二)
2006/10/09 PHP
PHP编码规范的深入探讨
2013/06/06 PHP
getJSON跨域SyntaxError问题分析
2014/08/07 PHP
php版本CKEditor 4和CKFinder安装及配置方法图文教程
2019/06/05 PHP
Thinkphp5框架中引入Markdown编辑器操作示例
2020/06/03 PHP
自动更新作用
2006/10/08 Javascript
Js 本页面传值实现代码
2009/05/17 Javascript
JavaScript iframe的相互操作浅析
2009/10/14 Javascript
Jquery Ajax的Get方式时需要注意URL地方
2011/04/07 Javascript
js window.print实现打印特定控件或内容
2013/09/16 Javascript
js 处理数组重复元素示例代码
2013/12/27 Javascript
使用js完成节点的增删改复制等的操作
2014/01/02 Javascript
jQuery EasyUI编辑DataGrid用combobox实现多级联动
2016/08/29 Javascript
jQuery 中msgTips 顶部弹窗效果实现代码
2017/08/14 jQuery
vue-cli构建项目使用 less的方法
2017/10/04 Javascript
JS实现读取xml内容并输出到div中的方法示例
2018/04/19 Javascript
vue项目开发中setTimeout等定时器的管理问题
2018/09/13 Javascript
使用JQuery自动完成插件Auto Complete详解
2019/06/18 jQuery
基于js实现复制内容到操作系统粘贴板过程解析
2019/10/11 Javascript
JavaScript 引用类型实例详解【数组、对象、严格模式等】
2020/05/13 Javascript
[47:21]Liquid vs TNC Supermajor 胜者组 BO3 第一场 6.4
2018/06/05 DOTA
python集合类型用法分析
2015/04/08 Python
浅谈Python中的作用域规则和闭包
2018/03/20 Python
Python图像滤波处理操作示例【基于ImageFilter类】
2019/01/03 Python
pyqt5之将textBrowser的内容写入txt文档的方法
2019/06/21 Python
python智联招聘爬虫并导入到excel代码实例
2019/09/09 Python
python datetime处理时间小结
2020/04/16 Python
python如何保存文本文件
2020/06/07 Python
如何在mac版pycharm选择python版本
2020/07/21 Python
玩具反斗城葡萄牙官方商城:Toys"R"Us葡萄牙
2016/10/21 全球购物
Skyscanner加拿大:全球旅行搜索平台
2018/11/19 全球购物
Christys’ Hats官网:英国帽子制造商
2018/11/28 全球购物
卫校中专生个人自我评价
2013/09/19 职场文书
酒吧创业计划书
2014/01/18 职场文书
爱心倡议书范文
2014/05/12 职场文书
告别网页搜索!教你用python实现一款属于自己的翻译词典软件
2021/06/03 Python