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
PHP 字符串编码截取函数(兼容utf-8和gb2312)
May 02 PHP
PHP中break及continue两个流程控制指令区别分析
Apr 18 PHP
在PHP中使用redis
Nov 04 PHP
浅析echo(),print(),print_r(),return之间的区别
Nov 27 PHP
PHP编译安装中遇到的两个错误和解决方法
Aug 20 PHP
Yii2基于Ajax自动获取表单数据的方法
Aug 10 PHP
php中namespace及use用法分析
Dec 06 PHP
详解Yii2.0使用AR联表查询实例
Jun 16 PHP
ThinkPHP实现转换数据库查询结果数据到对应类型的方法
Nov 16 PHP
从ThinkPHP3.2.3过渡到ThinkPHP5.0学习笔记图文详解
Apr 03 PHP
php设计模式之职责链模式定义与用法经典示例
Sep 19 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
为百度UE编辑器上传图片添加水印功能
2015/04/16 PHP
深入浅析PHP的session反序列化漏洞问题
2017/06/15 PHP
PHPExcel 修改已存在Excel的方法
2018/05/03 PHP
laravel多条件查询方法(and,or嵌套查询)
2019/10/09 PHP
JavaScript网页制作特殊效果用随机数
2007/05/22 Javascript
科讯商业版中用到的ajax空间与分页函数
2007/09/02 Javascript
IE关闭时判断及AJAX注销案例学习
2013/02/18 Javascript
JavaSacript中charCodeAt()方法的使用详解
2015/06/05 Javascript
jquery图片倾斜层叠切换特效代码分享
2015/08/27 Javascript
AngularJS入门教程之ng-checked 指令详解
2016/08/01 Javascript
原生js实现秒表计时器功能
2017/02/16 Javascript
JavaScript实现获取用户单击body中所有A标签内容的方法
2017/06/05 Javascript
Vue实现路由跳转和嵌套
2017/06/20 Javascript
详谈AngularJs 控制器、数据绑定、作用域
2017/07/09 Javascript
jQuery实现的简单歌词滚动功能示例
2019/01/07 jQuery
JS控制只能输入数字并且最多允许小数点两位
2019/11/24 Javascript
用Python实现web端用户登录和注册功能的教程
2015/04/30 Python
Python中遍历字典过程中更改元素导致异常的解决方法
2016/05/12 Python
Python Socket编程详细介绍
2017/03/23 Python
Python实现基于POS算法的区块链
2018/08/07 Python
python实现邮件发送功能
2019/08/10 Python
python 表格打印代码实例解析
2019/10/12 Python
如何在python中实现随机选择
2019/11/02 Python
Python基于yaml文件配置logging日志过程解析
2020/06/23 Python
Python 如何测试文件是否存在
2020/07/31 Python
python 利用百度API识别图片文字(多线程版)
2020/12/14 Python
recorder.js 基于Html5录音功能的实现
2020/05/26 HTML / CSS
高校教师思想汇报
2014/01/11 职场文书
学校万圣节活动方案
2014/02/13 职场文书
干部下基层实施方案
2014/03/14 职场文书
创意广告词
2014/03/17 职场文书
北京颐和园导游词
2015/01/30 职场文书
培根随笔读书笔记
2015/07/01 职场文书
mysql批量新增和存储的方法实例
2021/04/07 MySQL
《地。-关于地球的运动-》单行本第七集上市,小说家朝井辽献上期待又害怕的推荐文
2022/03/31 日漫
分享node.js实现简单登录注册的具体代码
2022/04/26 NodeJs