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下MYSQL limit的优化
Jan 10 PHP
PHP XML error parsing SOAP payload on line 1
Jun 17 PHP
PHP实现多进程并行操作的详解(可做守护进程)
Jun 18 PHP
Thinkphp中Create方法深入探究
Jun 16 PHP
php中explode函数用法分析
Nov 15 PHP
分享10段PHP常用代码
Nov 11 PHP
PHP MYSQL实现登陆和模糊查询两大功能
Feb 05 PHP
php大小写转换函数(strtolower、strtoupper)用法介绍
Nov 17 PHP
yii2多图上传组件的使用教程
May 10 PHP
JS操作XML中DTD介绍及使用方法分析
Jul 04 PHP
php更新cookie内容的详细方法
Sep 30 PHP
PHP ElasticSearch做搜索实例讲解
Feb 05 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作的文本留言本的例子(六)
2006/10/09 PHP
PHP Ajax实现页面无刷新发表评论
2007/01/02 PHP
php结合curl实现多线程抓取
2015/07/09 PHP
PHP数据库连接mysql与mysqli对比分析
2016/01/04 PHP
phpstudy默认不支持64位php的解决方法
2017/02/20 PHP
php判断某个方法是否存在函数function_exists (),method_exists()与is_callable()区别与用法解析
2020/04/20 PHP
JS event使用方法详解
2008/04/28 Javascript
Javascript模块化编程(一)AMD规范(规范使用模块)
2013/01/17 Javascript
JS组件Bootstrap实现下拉菜单效果代码
2016/04/26 Javascript
BootStrap Progressbar 实现大文件上传的进度条的实例代码
2016/06/27 Javascript
AngularJS使用自定义指令替代ng-repeat的方法
2016/09/17 Javascript
学习Node.js模块机制
2016/10/17 Javascript
js实现的简练高效拖拽功能示例
2016/12/21 Javascript
深入理解vue中的$set
2017/06/01 Javascript
解决layui前端框架 form表单,table表等内置控件不显示的问题
2018/08/19 Javascript
vue-vuex中使用commit提交mutation来修改state的方法详解
2018/09/16 Javascript
微信小程序使用map组件实现获取定位城市天气或者指定城市天气数据功能
2019/01/22 Javascript
js图片查看器插件用法示例
2019/06/22 Javascript
[49:08]OpTic vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
使用Selenium破解新浪微博的四宫格验证码
2018/10/19 Python
python 字典操作提取key,value的方法
2019/06/26 Python
Django ORM 聚合查询和分组查询实现详解
2019/08/09 Python
Python中的相关分析correlation analysis的实现
2019/08/29 Python
使用Python实现正态分布、正态分布采样
2019/11/20 Python
python selenium自动化测试框架搭建的方法步骤
2020/06/14 Python
Python如何获取文件路径/目录
2020/09/22 Python
美国围栏公司:Walpole Outdoors
2019/11/19 全球购物
德国家具折扣店:POCO
2020/02/28 全球购物
2014升学宴答谢词
2014/01/26 职场文书
医药营销个人求职信范文
2014/02/07 职场文书
《美丽的黄昏》教学反思
2014/02/28 职场文书
高速铁道技术专业求职信
2014/08/09 职场文书
学校师德师风整改措施
2014/10/27 职场文书
JS继承最简单的理解方式
2021/03/31 Javascript
HTTP中的Content-type详解
2022/01/18 HTML / CSS
python实现双链表
2022/05/25 Python