Beispiele zur Erläuterung der Definition und Verwendung von PHP-Socket-Netzwerkbetriebsklassen

巴扎黑
Freigeben: 2023-03-15 17:26:01
Original
1478 Leute haben es durchsucht

In diesem Artikel werden hauptsächlich die Definition und Verwendung der PHP-Socket-Netzwerkoperationsklasse anhand von Beispielen und verwandten Verwendungsfähigkeiten wie dem Senden von Abfrageanforderungen in Kombination mit Ajax Friends vorgestellt Bei Bedarf kann darauf verwiesen werden

Die Beispiele in diesem Artikel beschreiben die Definition und Verwendung von PHP-Socket-Netzwerkbetriebsklassen. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:

Web-Frontend-Test:


<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>
Nach dem Login kopieren

mysocket.php :


<?php
class Connector
{
  public static $instance=null;
  public $conn;
  private function __construct()
  {
      set_time_limit(0);
      $ip = &#39;192.168.238.1&#39;;
      $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;
      }
    }
  }
}
?>
Nach dem Login kopieren

main.php (Aufrufort):


<?php
require_once(&#39;mysocket.php&#39;);
$con = Connector::getInstance();
$req = $_GET[&#39;cmd&#39;];
$con->sendMsg($req);
$ret = $con->getMsg();
echo $ret;
?>
Nach dem Login kopieren

Anwendungsbeschreibung:

Der Client initiiert eine Ajax-Anfrage, um PHP aufzurufen, und dann initiiert PHP mit Hilfe von Socket eine weitere Anfrage an das C++-Modul .

Das obige ist der detaillierte Inhalt vonBeispiele zur Erläuterung der Definition und Verwendung von PHP-Socket-Netzwerkbetriebsklassen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage