Beginnen wir mit einem einfachen Beispiel – einem TCP-Dienst, der eine Eingabezeichenfolge empfängt, verarbeitet und an den Client zurückgibt. Hier ist der entsprechende Code:
PHP-Code:
<? // 设置一些基本的变量 $host="192.168.1.99"; $port=1234; // 设置超时时间 set_time_limit(0); // 创建一个Socket $socket=socket_create(AF_INET,SOCK_STREAM,0) or die("Could not create socket\n"); //绑定Socket到端口 $result=socket_bind($socket,$host,$port) or die("Could not bind to socket\n"); // 开始监听链接 $result=socket_listen($socket,3) or die("Could not set up socket listener\n"); // accept incoming connections // 另一个Socket来处理通信 $spawn=socket_accept($socket) or die("Could not accept incoming connection\n"); // 获得客户端的输入 $input=socket_read($spawn,1024) or die("Could not read input\n"); // 清空输入字符串 $input=trim($input); //处理客户端输入并返回结果 $output=strrev($input) ."\n"; socket_write($spawn,$output,strlen($output)) or die("Could not write output\n"); // 关闭sockets socket_close($spawn); socket_close($socket); ?>
Im Folgenden finden Sie eine detaillierte Beschreibung jedes Schritts:
1. Der erste Schritt besteht darin, zwei Variablen festzulegen, um die IP-Adresse und den Port des Servers zu speichern, auf dem der Socket ausgeführt wird es zu Ihrem eigenen Server und Port (dieser Port kann eine Zahl zwischen 1 und 65535 sein), sofern dieser Port nicht verwendet wird
<? // 设置两个变量 $host="192.168.1.99"; $port=1234; ?>
2 Sie können die Funktion set_time_out() verwenden auf der Serverseite, um sicherzustellen, dass PHP ausgeführt wird. Beim Warten auf die Verbindung des Clients tritt kein Timeout auf.
PHP-Code:
<? // 超时时间 set_time_limit(0); ?>
3 die vorherigen, jetzt ist es an der Zeit, die Funktion socket_creat() zu verwenden, um einen Socket zu erstellen. Diese Funktion gibt ein Socket-Handle zurück, das in allen nachfolgenden Funktionen verwendet wird.
PHP-Code:
<? // 创建Socket $socket=socket_create(AF_INET,SOCK_STREAM,0) or die("Could not create socket\n"); ?>
Der erste Parameter „AF_INET“ wird verwendet, um den Domänennamen anzugeben;
Der zweite Parameter „SOCK_STREM“ teilt der Funktion mit, welcher Socket-Typ erstellt wird (TCP-Typ in diesem Beispiel)
Wenn Sie also einen UDP-Socket erstellen möchten, können Sie den folgenden Code verwenden:
PHP-Code:
<? // 创建 socket $socket=socket_create(AF_INET,SOCK_DGRAM,0) or die("Could not create socket\n"); ?>
4. Sobald ein Socket-Handle erstellt wurde , der nächste Schritt besteht darin, die angegebene Adresse und den angegebenen Port anzugeben. Dies kann über die Funktion socket_bind()
PHP-Code erfolgen:
<? // 绑定 socket to 指定地址和端口 $result=socket_bind($socket,$host,$port) or die("Could not bind to socket\n"); ?>
5. Wenn der Socket erstellt und an einen Port gebunden ist, können Sie mit dem Abhören externer Verbindungen beginnen. Mit der Funktion socket_listen() können Sie eine Nummer angeben (in diesem Beispiel). der zweite Parameter: 3)
PHP-Code:
<? // 开始监听连接 $result=socket_listen($socket,3) or die("Could not set up socket listener\n"); ?>
6. Bisher macht Ihr Server im Grunde nichts anderes, als auf Verbindungsanfragen von Clients zu warten. Sobald eine Client-Verbindung empfangen wird, beginnt die Funktion socket_assept zu arbeiten. Sie empfängt die Verbindungsanforderung und ruft einen anderen Sub-Socket auf, um die Informationen zwischen dem Client und dem Server zu verarbeiten PHP-Code:
<? //接受请求链接 // 调用子socket 处理信息 $spawn=socket_accept($socket) or die("Could not accept incoming connection\n"); ?>
PHP-Code zugewiesen werden: