Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erläuterung von Beispielen für die Socket-zu-Server-Kommunikation in PHP

Detaillierte Erläuterung von Beispielen für die Socket-zu-Server-Kommunikation in PHP

墨辰丷
墨辰丷Original
2018-05-26 15:26:091209Durchsuche

In diesem Artikel wird hauptsächlich ein detailliertes Beispiel für die Client-zu-Server-Kommunikation mithilfe von PHP-Sockets vorgestellt. Es hat einen gewissen Referenzwert und interessierte Freunde können darauf verweisen.

1. server.php-Server:

<?php 
error_reporting(E_ALL); 
set_time_limit(0); 
ob_implicit_flush(); 
//本地IP 
$address = &#39;localhost&#39;; 
//设置用111端口进行通信 
$port = 111; 
//创建SOCKET 
if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) < 0) { 
    echo "socket创建失败原因 " . socket_strerror($sock) . "\n"; 
} 
 
if (($ret = socket_bind($sock, $address, $port)) < 0) { 
    echo "创建套接字失败原因 " . socket_strerror($ret) . "\n"; 
} 
//监听 
if (($ret = socket_listen($sock, 5)) < 0) { 
    echo "监听失败原因 " . socket_strerror($ret) . "\n"; 
} 
do { 
  //接收命令  
  if (($msgsock = @socket_accept($sock)) < 0) { 
    echo "命令接收失败原因: " . socket_strerror($msgsock) . "\n"; 
    break; 
  } 
  $msg = "\nPHP Test Server. \n" ."用quit,shutdown,sun...等命令测试.\n"; 
 
  @socket_write($msgsock, $msg, strlen($msg)); 
 
  do { 
    if (false === ($buf = @socket_read($msgsock, 2048, PHP_NORMAL_READ))) { 
        echo "socket_read() failed: reason: " . socket_strerror($ret) . "\n"; 
        break 2; 
    } 
    if (!$buf = trim($buf)) { 
        continue; 
    } 
    if ($buf == &#39;quit&#39;) { 
        break; 
    } 
    if ($buf == &#39;shutdown&#39;) { 
        socket_close($msgsock); 
        break 2; 
    } 
    if ($buf == &#39;sun&#39;) { 
        echo&#39;what are you doing?&#39;; 
    } 
    $talkback = "Backinformation : &#39;$buf&#39;.\n"; 
    socket_write($msgsock, $talkback, strlen($talkback)); 
    echo "$buf\n"; 
  } while (true); 
 
  socket_close($msgsock); 
 
} while (true); 
 
socket_close($sock); 
?>

2. client.php client:

<?php 
error_reporting(E_ALL); 
//端口111 
$service_port = 111; 
//本地 
$address = &#39;localhost&#39;; 
//创建 TCP/IP socket 
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); 
if ($socket < 0) { 
    echo "socket创建失败原因: " . socket_strerror($socket) . "\n"; 
} else { 
    echo "OK,HE HE.\n"; 
} 
$result = socket_connect($socket, $address, $service_port); 
if ($result < 0) { 
    echo "SOCKET连接失败原因: ($result) " . socket_strerror($result) . "\n"; 
} else { 
    echo "OK.\n"; 
} 
//发送命令 
$in = "HEAD / HTTP/1.1\r\n"; 
$in .= "Connection: Close\r\n\r\n"; 
$out = &#39;&#39;; 
echo "Send Command.........."; 
$in = "sun\n"; 
socket_write($socket, $in, strlen($in)); 
echo "OK.\n"; 
echo "Reading Backinformatin:\n\n"; 
while ($out = socket_read($socket, 2048)) { 
    echo $out; 
} 
echo "Close socket........"; 
socket_close($socket); 
echo "OK,He He.\n\n"; 
?>

Diese beiden Codeteile sind eine kurze Einführung in die Implementierung PHP-Kommunikation zwischen dem Client und dem Server

Für bestimmte Vorgänge verwenden Sie den PHP-Befehl, um den SERVER unter DOS zu öffnen und ihn in den Überwachungszustand zu versetzen.

Öffnen Öffnen Sie erneut ein DOS-Fenster und verwenden Sie den PHP-Befehl „CLIENT öffnen“. Sie erhalten eine Antwort vom Server....

Das Obige ist der gesamte Inhalt davon Artikel, ich hoffe, dass er für das Studium aller hilfreich sein wird.


Verwandte Empfehlungen:

So bedienen Sie NodeJS mit WebSocket

Native NodeJS verwendet WebSocketCode-Sharing

Wie PHP Socket verwendet, um das SSL-Zertifikat und den öffentlichen Schlüssel der Website zu erhalten

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung von Beispielen für die Socket-zu-Server-Kommunikation 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