巅云智能建站平台搭建版(创业流派版)火爆上线,毕生受权!新增:文章智能收罗+全站真静态打包+都会分站+智能小法式+不法词过滤+H5自顺应+智能链词等功效功效概况
赞助文档Help

php完成与python停止socket通讯的体例示例

一佰互联网站建造(www.taishanly.com) 宣布日期 2020-04-25 14:41:29 阅读数: 230

本文实例报告了php完成与python停止socket通讯的体例。分享给大师供大师参考,详细以下:

设想目标

经由过程前端页面倡议要求交给php,php成立socket要求交给Python剧本,而后履行终了以后,前往给前端。

index.html

<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()
  {
    g_xmlHttpReq.open("GET","./service/main.php?cmd=1",true);
    g_xmlHttpReq.onreadystatechange=onReplyCallback;
    g_xmlHttpReq.send(null);
  }
  </script>
</head>
<body>
<button onclick="on_stop_service()">封闭办事</button>
</body>
</html>

service / main.php

<?php
require_once("mysocket.php");
$con = Connector::getInstance();
$req = "aaaaaaa";
$con->sendMsg($req);
$ret = $con->getMsg();
echo $ret;
?>

service / 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)."
";
      }
      $result = socket_connect($this->conn, $ip, $port);
      if ($result < 0) {
        echo "socket_connect() failed.
Reason: ($result) " . socket_strerror($result) . "
";
      }else {
        echo "毗连OK
";
      }
  }
  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;
      }
    }
  }
}
?>

multiServer.py

import threading
import socket
import time
encoding = "utf-8"
BUFSIZE = 1024
# a read thread, read data from remote
class Reader(threading.Thread):
  def __init__(self, client):
    threading.Thread.__init__(self)
    self.client = client
  def run(self):
    #while True:
    data = self.client.recv(BUFSIZE)
    if(data):
       string = bytes.decode(data, encoding)
       print "from client::",string,""
       time.sleep(10)
       self.client.send("return frome server::" + string)
    print "close:", self.client.getpeername()
  def readline(self):
    rec = self.inputs.readline()
    if rec:
      string = bytes.decode(rec, encoding)
      if len(string)>2:
        string = string[0:-2]
      else:
        string = " "
    else:
      string = False
    return string
# a listen thread, listen remote connect
# when a remote machine request to connect, it will create a read thread to handle
class Listener(threading.Thread):
  def __init__(self, port):
    threading.Thread.__init__(self)
    self.port = port
    self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    self.sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    self.sock.bind(("0.0.0.0", port))
    self.sock.listen(0)
  def run(self):
    print "listener started"
    while True:
      client, cltadd = self.sock.accept()
      print "accept a connect..."
      Reader(client).start()
      cltadd = cltadd
      print "accept a connect(new reader..)"
lst = Listener(8888)  # create a listen thread
lst.start() # then start
# Now, you can use telnet to test it, the command is "telnet 127.0.0.1 9011"
# You also can use web broswer to test, input the address of "http://127.0.0.1:9011" and press Enter button
# Enjoy it....

更多对PHP相干内容感乐趣的读者可检查本站专题:《php socket用法总结》、《php字符串(string)用法总结》、《PHP数学运算技能总结》、《php面向工具法式设想入门教程》、《PHP数组(Array)操纵技能大全》、《PHP数据布局与算法教程》、《php法式设想算法总结》及《PHP收集编程技能总结》

但愿本文所述对大师PHP法式设想有所赞助。

一佰互联是天下着名建站品牌办事商,咱们有九年、网站建造、网页设想、php开辟和域名注册及假造主机办事经历,供给的办事更是天下着名。最近几年来还整合团队上风自立开辟了可视化多用户”“3.0平台版,拖拽排版网站建造设想,轻松完成pc站、手机微网站、小法式、APP一体化全网营销网站扶植 ,已胜利的为天下上百家收集公司供给自助建站平台搭建办事。

相干消息more

19
06月
建站宝盒建站体系更新进级

新增 1.新增一套消息列表 增加模块-消息模块-气概1 点击列表时可主动翻开封闭 2.新增两套手机导航 增加模块-导航... >>概况

15
04月
刘强东致辞:将来十年中国网民人数将超10亿

据高端网站扶植09月24日报道:作为这次习主席访美的主要勾当之一,“第八届中美互联网服装服装服装服装服装论坛t.vhao.nett.vhao.nett.vhao.nett.vhao.nett.vhao.net”于美国时候9月23日在西雅... >>概况

27
11月
公司建网站要先找准定位在哪

咱们成立网站之前,须要做良多筹办任务,此中是做好网站定位。跟着收集的成长,一些旧的网站情势已过期了。网站定位便是要晓得成立网站的目标,公司... >>概况

05
04月
网站推行能够利用一些别开生面的体例

所谓病毒式营销,指的是犹如病毒一样的分散速率,以是不用担忧,这类营销手腕是正轨的。病毒式营销的内容有良多,简略历数。能够为用户供给收费的办事... >>概况

高端网站扶植

美工统筹SEO,为企业电子商务营销助力!

德律风:

023-85725751
建站

产物

域名注册 假造主机 云办事器 企业邮局
智能建站 APP打包 微站/小法式 创业平台
网站推行 媒体营销 智能收罗 AI机械人
400德律风 短信营销 店销机械人
私家定制 流派网站