Home  >  Article  >  Backend Development  >  Detailed explanation of usage examples of socket in php

Detailed explanation of usage examples of socket in php

怪我咯
怪我咯Original
2017-07-05 09:39:061632browse

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 = &#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);
?>

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 = &#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";

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!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Previous article:What is php socket?Next article:What is php socket?