This article mainly introduces the usage of socket in php, and details the complete steps of socket communication in PHP. It is of great reference value. Friends in need can refer to it.
The examples in this article describe php in detail The usage of socket is shared with everyone for your reference. The specific usage is as follows:
1. Open socket
phpinfo(); Check whether the socket extension is enabled, otherwise enable it in php.ini .
2. How to write the server-side code
The code is as follows:
<?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); ?>
The server-side needs to be executed in cli mode, it is possible to use php in cli mode The .ini file is loaded differently.
can be output like the following:
At this time, there is a tem.text file in the zhoxh directory. Check Configuration File (php.ini) Path => C:\WINDOWS . It is not my php.ini file, which means that the php.ini file being called is wrong. At this time, we need to specify the php.ini file command as follows
Note that my php can be executed directly with environment variables configured.
3. Client
The code is as follows:
<?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";
The execution results are as follows:
server:
client:
The above is the detailed content of Detailed explanation of usage examples of socket in php. For more information, please follow other related articles on the PHP Chinese website!