swooleWhat should I do if the client cannot connect?
Introduction to the 4 ways of client connection to the server
Four ways of client connection: Browser connection
server.php: <?php //创建Server对象,监听 10.211.55.15:9501端口 $serv = new swoole_server("10.211.55.15", 9501); // 10.211.55.15 是我们Swoole服务器地址 //监听数据接收事件 $serv->on('receive', function ($serv, $fd, $from_id, $data) { echo $data; //打印 接收到的数据 $serv->send($fd, "I am swoole"); //发送字符串给客户端 $serv->close($fd); // 注意:官方并不建议在这里关闭掉 }); //启动服务器 $serv->start();
Look at the above carefully Code, after creating the service, we listened to the data reception event, printed the received data, and then output an I am swoole string.
Similarly execute server.php, the terminal command line will be in "waiting state":
php server.php
Then we use Firefox as the client and request the Swoole server: http://10.211.55.15 :9501/
At this time, the (server) terminal will output something similar to the following:
GET /favicon.ico HTTP/1.1 Host: 10.211.55.15:9501 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:57.0) Gecko/20100101 Firefox/57.0 Accept: */* Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2 Accept-Encoding: gzip, deflate Connection: keep-alive
This is exactly the content of the HTTP protocol.
Why can it be accessed through a browser?
The browser can be understood as a socket client, completing the transmission process through interaction with the HTTP protocol.
HTTP protocol (application layer) is based on TCP protocol (transport layer). When the browser sends a request, it will send a "string" according to the provisions of the HTTP protocol. After the request is completed, the port will be connected.
Above we accessed the Swoole server through a browser. Some browsers may not work because we simply output a string and did not follow the HTTP protocol.
Four client connection methods: telnet
First of all, we need to slightly modify our server code (server.php) and comment out the following line:
$serv->close($fd); // 注意:官方并不建议在这里关闭掉
If not To install telnet, use the following command to install:
yum install telnet -y
Operation method:
telnet 10.211.55.15 9501 #连接后,敲击键盘`ctrl+]`键,就可以发送消息了, #比如我们输入 hello #会紧接着一行显示 I am swoole
Four client connection methods: Write your own socket
First, make sure whether the socket extension is installed.
Use native php code to write a client client.php:
$socket = socket_create(AF_INET,SOCK_STREAM,SOL_TCP); socket_connect($socket,"10.211.55.15", 9501); socket_write($socket,"hello swoole"); // 读 $out = socket_read($socket,1024); echo $out; socket_close($socket);
Four client connection methods: The client officially provided by Swoole
https://wiki .swoole.com/wiki/page/p-client.html
<?php $client = new swoole_client(SWOOLE_SOCK_TCP); if (!$client->connect("10.211.55.15", 9501, -1)) { exit("connect failed. Error: {$client->errCode}\n"); } $client->send("hello world\n"); echo $client->recv(); //打印 接收到的数据 $client->close();
The above is the detailed content of What should I do if the swoole client cannot connect?. For more information, please follow other related articles on the PHP Chinese website!