Cet article présente principalement l'utilisation de socket en php et détaille les étapes complètes de la communication par socket en PHP. Il est très précieux pour référence. Les amis dans le besoin peuvent s'y référer
Les exemples de cet article. décrire php en détail L'utilisation de socket est partagée avec tout le monde pour votre référence. L'utilisation spécifique est la suivante :
1. Ouvrir le socket
phpinfo(); dans php.ini .
2. Comment écrire le code côté serveur
Le code est le suivant :
<?php error_reporting(E_ALL); set_time_limit(0); //ob_implicit_flush(); $address = '127.0.0.1'; $port = 10005; //创建端口 if( ($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) === false) { echo "socket_create() failed :reason:" . socket_strerror(socket_last_error()) . "\n"; } //绑定 if (socket_bind($sock, $address, $port) === false) { echo "socket_bind() failed :reason:" . socket_strerror(socket_last_error($sock)) . "\n"; } //监听 if (socket_listen($sock, 5) === false) { echo "socket_bind() failed :reason:" . socket_strerror(socket_last_error($sock)) . "\n"; } do { //得到一个链接 if (($msgsock = socket_accept($sock)) === false) { echo "socket_accepty() failed :reason:".socket_strerror(socket_last_error($sock)) . "\n"; break; } //welcome 发送到客户端 $msg = "<font color='red'>server send:welcome</font><br/>"; socket_write($msgsock, $msg, strlen($msg)); echo 'read client message\n'; $buf = socket_read($msgsock, 8192); $talkback = "received message:$buf\n"; echo $talkback; if (false === socket_write($msgsock, $talkback, strlen($talkback))) { echo "socket_write() failed reason:" . socket_strerror(socket_last_error($sock)) ."\n"; } else { echo 'send success'; } socket_close($msgsock); } while(true); //关闭socket socket_close($sock); ?>
Le serveur doit être exécuté dans mode cli, il est possible d'exécuter en mode cli Le fichier php.ini est chargé différemment
peut être affiché comme suit :
À ce moment. , il y a un fichier tem.text dans le répertoire zhoxh. Vérifiez le chemin du fichier de configuration (php.ini) => C:WINDOWS . Ce n'est pas mon fichier php.ini, ce qui signifie que le fichier php.ini appelé est erroné. A ce moment, nous devons spécifier la commande du fichier php.ini comme suit
Notez que mon php peut être directement exécuté avec les variables d'environnement configurées.
3. Client
Le code est le suivant :
<?php //error_reporting(E_ALL); echo "<h2>tcp/ip connection </h2>\n"; $service_port = 10005; $address = '127.0.0.1'; $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); if ($socket === false) { echo "socket_create() failed: reason: " . socket_strerror(socket_last_error()) . "\n"; } else { echo "OK. \n"; } echo "Attempting to connect to '$address' on port '$service_port'..."; $result = socket_connect($socket, $address, $service_port); if($result === false) { echo "socket_connect() failed.\nReason: ($result) " . socket_strerror(socket_last_error($socket)) . "\n"; } else { echo "OK \n"; } $in = "HEAD / http/1.1\r\n"; $in .= "HOST: localhost \r\n"; $in .= "Connection: close\r\n\r\n"; $out = ""; echo "sending http head request ..."; socket_write($socket, $in, strlen($in)); echo "OK\n"; echo "Reading response:\n\n"; while ($out = socket_read($socket, 8192)) { echo $out; } echo "closeing socket.."; socket_close($socket); echo "ok .\n\n";
Les résultats de l'exécution sont les suivants :
serveur :
client :
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!