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 AJAX实例根据邮编自动完成地址信息
Nov 23 PHP
php checkbox 取值详细说明
Aug 19 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(二)
Jun 23 PHP
php发送get、post请求的6种方法简明总结
Jul 08 PHP
php中mkdir函数用法实例分析
Nov 15 PHP
ThinkPHP实现ajax仿官网搜索功能实例
Dec 02 PHP
PHP实现二叉树的深度优先与广度优先遍历方法
Sep 28 PHP
php实现给二维数组中所有一维数组添加值的方法
Feb 04 PHP
php数组指针操作详解
Feb 14 PHP
Laravel如何使用数据库事务及捕获事务失败后的异常详解
Oct 23 PHP
微信公众号开发之获取位置信息php代码
Jun 13 PHP
如何通过Apache在本地配置多个虚拟主机
Jul 29 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与C#分别格式化文件大小的代码
2011/05/14 PHP
CI(CodeIgniter)框架介绍
2014/06/09 PHP
PHP文件操作实例总结
2016/09/27 PHP
你真的了解JavaScript吗?
2007/02/24 Javascript
FormValidate 表单验证功能代码更新并提供下载
2008/08/23 Javascript
js 获取服务器控件值的代码
2010/03/05 Javascript
jquery 简单的进度条实现代码
2010/03/11 Javascript
深入理解JavaScript系列(4) 立即调用的函数表达式
2012/01/15 Javascript
网页右键ie不支持event.preventDefault和event.returnValue (需要加window)
2013/02/22 Javascript
js模拟滚动条(横向竖向)
2013/02/22 Javascript
jquery 面包屑导航 具体实现
2013/06/05 Javascript
JavaScript和CSS交互的方法汇总
2014/12/02 Javascript
node.js中的http.response.addTrailers方法使用说明
2014/12/14 Javascript
javascript实现仿IE顶部的可关闭警告条
2015/05/05 Javascript
浅析AngularJS Filter用法
2015/12/28 Javascript
表单中单选框添加选项和移除选项
2016/07/04 Javascript
jQuery+ajax读取并解析XML文件的方法
2016/09/09 Javascript
BootStrap与Select2使用小结
2017/02/17 Javascript
微信小程序基于slider组件动态修改标签透明度的方法示例
2017/12/04 Javascript
Vue框架TypeScript装饰器使用指南小结
2019/02/18 Javascript
微信小程序实现菜单左右联动
2020/05/19 Javascript
js实现滑动滑块验证登录
2020/07/24 Javascript
在Django中创建动态视图的教程
2015/07/15 Python
浅谈python类属性的访问、设置和删除方法
2016/07/25 Python
win7上python2.7连接mysql数据库的方法
2017/01/14 Python
详解python3中用HTMLTestRunner.py报ImportError: No module named 'StringIO'如何解决
2019/08/27 Python
python matplotlib 画dataframe的时间序列图实例
2019/11/20 Python
简单了解Python变量作用域正确使用方法
2020/06/12 Python
Python爬虫+tkinter界面实现历史天气查询的思路详解
2021/02/22 Python
GUESS西班牙官方网上商城:美国服饰品牌
2017/03/15 全球购物
详解如何解决使用JSON.stringify时遇到的循环引用问题
2021/03/23 Javascript
电子专业毕业生自荐信
2014/05/25 职场文书
庆七一活动总结
2014/08/27 职场文书
给校长的一封检讨书
2014/09/20 职场文书
秋收起义观后感
2015/06/11 职场文书
六个好看实用的 HTML + CSS 后台登录入口页面
2022/04/28 HTML / CSS