Classe d'opération réseau de socket PHP

不言
Libérer: 2023-03-22 22:42:02
original
1285 Les gens l'ont consulté

Cet article partage avec vous le code pour le fonctionnement du réseau socket en php. Les amis intéressés peuvent jeter un œil au contenu de cet article

## tests frontaux 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>
Copier après la connexion





## 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;
			}
		}
	}

}



?>
Copier après la connexion

## main.php (lieu d'appel)



<?php
require_once(&#39;mysocket.php&#39;); 

$con = Connector::getInstance();
$req = $_GET[&#39;cmd&#39;];
$con->sendMsg($req);
$ret = $con->getMsg();
echo $ret;
?>
Copier après la connexion

## Description de l'application


Le client ajax initie une requête pour appeler Php, puis PHP initie en outre une requête au module C++ à l'aide du socket .

Recommandations associées :

Explication détaillée de la programmation SOCKET en PHP

Paramètres de connexion pour websocket en php sur MAC

Explication détaillée de la communication socket en php


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal