Heim  >  Artikel  >  PHP-Framework  >  Was soll ich tun, wenn der Swoole-Client keine Verbindung herstellen kann?

Was soll ich tun, wenn der Swoole-Client keine Verbindung herstellen kann?

藏色散人
藏色散人Original
2020-04-10 09:47:213837Durchsuche

Was soll ich tun, wenn der Swoole-Client keine Verbindung herstellen kann?

swooleWas soll ich tun, wenn der Client keine Verbindung herstellen kann?

Einführung in 4 Möglichkeiten für Clients, eine Verbindung zu Servern herzustellen

Vier Möglichkeiten für Clients, eine Verbindung herzustellen: Browserverbindung

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(&#39;receive&#39;, function ($serv, $fd, $from_id, $data) {
    echo $data; //打印 接收到的数据
    $serv->send($fd, "I am swoole"); //发送字符串给客户端
    $serv->close($fd); // 注意:官方并不建议在这里关闭掉
});
//启动服务器
$serv->start();

Schauen Sie sich oben genau an Code: Nachdem wir den Dienst erstellt haben, haben wir das Datenempfangsereignis abgehört, die empfangenen Daten gedruckt und dann eine I am swoole-Zeichenfolge ausgegeben.

Führen Sie server.php auf die gleiche Weise aus, die Terminal-Befehlszeile befindet sich im „Wartezustand“:

php server.php

Dann verwenden wir Firefox als Client und fordern den Swoole-Server an: http:/ /10.211.55.15 :9501/

Zu diesem Zeitpunkt gibt das (Server-)Terminal etwa Folgendes aus:

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

Das ist genau der Inhalt des HTTP-Protokolls.

Warum kann über einen Browser darauf zugegriffen werden?

Der Browser kann als Socket-Client verstanden werden, der den Übertragungsprozess durch Interaktion mit dem HTTP-Protokoll abschließt.

Das HTTP-Protokoll (Anwendungsschicht) basiert auf dem TCP-Protokoll (Transportschicht). Wenn der Browser eine Anfrage sendet, sendet er nach Abschluss der Anfrage eine „Zeichenfolge“. , der Port wird verbunden.

Oben haben wir über einen Browser auf den Swoole-Server zugegriffen. Einige Browser funktionieren möglicherweise nicht, weil wir einfach eine Zeichenfolge ausgegeben haben und nicht dem HTTP-Protokoll gefolgt sind.

Vier Client-Verbindungsmethoden: Telnet

Zuerst müssen wir unseren Servercode (server.php) leicht ändern und die folgende Zeile auskommentieren:

$serv->close($fd); // 注意:官方并不建议在这里关闭掉

If nicht Um Telnet zu installieren, verwenden Sie den folgenden Befehl zur Installation:

yum install telnet -y

Bedienung:

telnet 10.211.55.15 9501
#连接后,敲击键盘`ctrl+]`键,就可以发送消息了,
#比如我们输入
hello
#会紧接着一行显示
I am swoole

Vier Client-Verbindungsmethoden: Schreiben Sie Ihren eigenen Socket

Zuerst machen Stellen Sie sicher, dass die Socket-Erweiterung installiert ist.

Verwenden Sie nativen PHP-Code, um einen Client-Client zu schreiben.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);

Vier Client-Verbindungsmethoden: Swoole offizieller Client

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();

Das obige ist der detaillierte Inhalt vonWas soll ich tun, wenn der Swoole-Client keine Verbindung herstellen kann?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn