ホームページ  >  記事  >  PHPフレームワーク  >  swooleクライアントが接続できない場合はどうすればよいですか?

swooleクライアントが接続できない場合はどうすればよいですか?

藏色散人
藏色散人オリジナル
2020-04-10 09:47:213837ブラウズ

swooleクライアントが接続できない場合はどうすればよいですか?

#swooleクライアントが接続できない場合はどうすればよいですか?

クライアントからサーバーに接続する 4 つの方法の概要

クライアント接続の 4 つの方法: ブラウザ接続

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

上記のコードを注意深く記述し、サービスを作成した後、データ受信イベントをリッスンし、受信したデータを出力し、I am swoole 文字列を出力しました。

同様にserver.phpを実行すると、ターミナルのコマンドラインが「待機状態」になります:

php server.php

次に、Firefoxをクライアントとして使用し、Swooleサーバーhttp://10.211をリクエストします。 55.15 :9501/

この時点で、(サーバー) 端末は次のような内容を出力します:

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

これは、まさに HTTP プロトコルの内容です。

ブラウザ経由でアクセスできるのはなぜですか?

ブラウザは、HTTP プロトコルとの対話を通じて送信プロセスを完了するソケット クライアントとして理解できます。

HTTP プロトコル (アプリケーション層) は TCP プロトコル (トランスポート層) をベースにしており、ブラウザがリクエストを送信すると、HTTP プロトコルの規定に従って「文字列」を送信します。 、ポートが接続されます。

上記ではブラウザ経由で Swoole サーバーにアクセスしましたが、文字列を出力するだけで HTTP プロトコルに従っていないため、一部のブラウザでは動作しない可能性があります。

4 つのクライアント接続方法: telnet

まず、サーバー コード (server.php) を少し変更し、次の行をコメント アウトする必要があります。 Telnet をインストールするには、次のコマンドを使用してインストールします。

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

操作方法:

yum install telnet -y

4 つのクライアント接続方法: 独自のソケットを作成する

まず、ソケット拡張がインストールされています。

ネイティブ php コードを使用してクライアント client.php:

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

4 つのクライアント接続方法: Swoole によって公式に提供されるクライアント

https://wiki .swoole。 com/wiki/page/p-client.html

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

以上がswooleクライアントが接続できない場合はどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。