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 基础教程(一)
Oct 09 PHP
PHP新手上路(八)
Oct 09 PHP
PHP XML error parsing SOAP payload on line 1
Jun 17 PHP
php park、unpark、ord 函数使用方法(二进制流接口应用实例)
Oct 19 PHP
基于PHP中的常用函数回顾
Jul 11 PHP
php常用字符串比较函数实例汇总
Nov 24 PHP
php 删除cookie方法详解
Dec 01 PHP
WebQQ最新登陆协议的用法
Dec 22 PHP
Zend Framework动作助手Url用法详解
Mar 05 PHP
Yii2框架实现数据库常用操作总结
Feb 08 PHP
yii gridview实现时间段筛选功能
Aug 15 PHP
Linux下源码包安装Swoole及基本使用操作图文详解
Apr 02 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
基于MySQL体系结构的分析
2013/05/02 PHP
php中操作memcached缓存进行增删改查数据的实现代码
2014/08/15 PHP
php用正则判断是否为数字的方法
2016/03/25 PHP
yii2使用ajax返回json的实现方法
2016/05/14 PHP
PHP实现双链表删除与插入节点的方法示例
2017/11/11 PHP
php设计模式之享元模式分析【星际争霸游戏案例】
2020/03/23 PHP
javascript 树形导航菜单实例代码
2013/08/13 Javascript
JavaScript中常用的六种互动方法示例
2015/03/13 Javascript
7个有用的jQuery代码片段分享
2015/05/19 Javascript
jQuery实现可编辑的表格实例讲解(2)
2015/09/17 Javascript
简单实现js选项卡切换效果
2016/02/03 Javascript
JSP基于Bootstrap分页显示实例解析
2016/06/12 Javascript
bootstrap datetimepicker日期插件超详细使用方法介绍
2017/02/23 Javascript
基于Nodejs的Tcp封包和解包的理解
2018/09/19 NodeJs
Vue CLI 3.x 自动部署项目至服务器的方法
2019/04/02 Javascript
vue实现购物车列表
2020/06/30 Javascript
[03:06]V社市场总监Dota2项目负责人Erik专访:希望更多中国玩家加入DOTA2
2014/07/11 DOTA
[12:21]VICI vs TNC (BO3)
2018/06/07 DOTA
[49:07]VGJ.T vs Optic Supermajor小组赛D组 BO3 第二场 6.3
2018/06/04 DOTA
python3使用tkinter实现ui界面简单实例
2014/01/10 Python
python利用smtplib实现QQ邮箱发送邮件
2020/05/20 Python
解决python打不开文件(文件不存在)的问题
2019/02/18 Python
用Python识别人脸,人种等各种信息
2019/07/15 Python
keras topN显示,自编写代码案例
2020/07/03 Python
数据库设计的包括哪两种,请分别进行说明
2016/07/15 面试题
学生出入校管理制度
2014/01/16 职场文书
小学毕业感言500字
2014/02/28 职场文书
环保倡议书300字
2014/05/15 职场文书
2014年群众路线党员自我评议
2014/09/24 职场文书
质监局领导班子践行群众路线整改方案
2014/10/26 职场文书
2015年医药代表工作总结
2015/04/25 职场文书
公司中层管理培训心得体会
2016/01/11 职场文书
学校学习型党组织建设心得体会
2019/06/21 职场文书
警用民用对讲机找不同
2022/02/18 无线电
python的html标准库
2022/04/29 Python
Python时间操作之pytz模块使用详解
2022/06/14 Python