Heim >Backend-Entwicklung >PHP-Tutorial >Detaillierte Erläuterung der Anwendungsbeispiele von Socket in PHP

Detaillierte Erläuterung der Anwendungsbeispiele von Socket in PHP

怪我咯
怪我咯Original
2017-07-05 09:39:061717Durchsuche

Dieser Artikel stellt hauptsächlich die Verwendung von Sockets in PHP vor und beschreibt die vollständigen Schritte der Socket-Kommunikation in PHP. Er ist sehr wertvoll als Referenz.

Die Beispiele in diesem Artikel Beschreiben Sie PHP im Detail. Die Verwendung von Socket wird zu Referenzzwecken mit allen geteilt. Die spezifische Verwendung ist wie folgt:

1. Open socket

phpinfo(); Überprüfen Sie, ob die Socket-Erweiterung aktiviert ist, andernfalls aktivieren Sie sie in php.ini .

2. So schreiben Sie den serverseitigen Code

Der Code lautet wie folgt:

<?php
error_reporting(E_ALL);
set_time_limit(0);
//ob_implicit_flush();
$address = &#39;127.0.0.1&#39;;
$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=&#39;red&#39;>server send:welcome</font><br/>";
 socket_write($msgsock, $msg, strlen($msg));
 echo &#39;read client message\n&#39;;
 $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 &#39;send success&#39;;
 }
 socket_close($msgsock);
} while(true);
//关闭socket
socket_close($sock);
?>

Der Server muss ausgeführt werden Im CLI-Modus kann die php.ini-Datei anders geladen werden.

kann wie folgt ausgegeben werden:

Zu diesem Zeitpunkt , es gibt eine tem.text-Datei im zhoxh-Verzeichnis. Überprüfen Sie den Pfad der Konfigurationsdatei (php.ini) => C:WINDOWS. Es ist nicht meine php.ini-Datei, was bedeutet, dass die aufgerufene php.ini-Datei falsch ist. Zu diesem Zeitpunkt müssen wir den Dateibefehl php.ini wie folgt angeben:

Beachten Sie, dass mein PHP direkt mit konfigurierten Umgebungsvariablen ausgeführt werden kann.

3. Client

Der Code lautet wie folgt:

<?php
//error_reporting(E_ALL);
echo "<h2>tcp/ip connection </h2>\n";
$service_port = 10005;
$address = &#39;127.0.0.1&#39;;
$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 &#39;$address&#39; on port &#39;$service_port&#39;...";
$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";

Die Ausführungsergebnisse sind wie folgt:
Server:

Kunde:

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Anwendungsbeispiele von Socket in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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
Vorheriger Artikel:Was ist ein PHP-Socket?Nächster Artikel:Was ist ein PHP-Socket?