Home >Backend Development >PHP Tutorial >Detailed explanation of usage examples of socket in php
The original English meaning of Socket is "hole" or "socket". As the process communication mechanism of BSD UNIX, the latter meaning is taken. Also commonly called "socket", it is used to describe an IP address and port. It is a handle to a communication chain and can be used to implement communication between different virtual machines or different computers. Hosts on the Internet generally run multiple service software and provide several services at the same time. Each service opens a Socket and is bound to a port. Different ports correspond to different services. Socket is just like its original meaning in English, like a multi-hole socket. A host is like a room filled with various sockets. Each socket has a number. Some sockets provide 220 volt AC power, some provide 110 volt AC power, and some provide cable TV programs. The client software plugs the plugs into sockets with different numbers to get different services. This article mainly introduces the usage of socket in PHP, and details the complete steps of socket communication in PHP. It is very valuable for reference. Friends in need can refer to it. 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!