ホームページ >バックエンド開発 >PHPチュートリアル >PHP でのソケットの使用: newsgroups から記事を取得する_PHP チュートリアル
PHP は、リモートまたはローカル ホストでソケット ポートを開くことができます。この記事は、Socket を使用する小さな例です。Usenet ニュース グループ サーバーに接続し、サーバーと通信し、ニュース グループからいくつかの記事をダウンロードします。
phpでソケットを開く
ソケットを開くにはfsockopen()を使用します。この関数はphp3とphp4の両方で使用できます。関数宣言
は次のとおりです:
int fsockopen (string hostname, int port [, int errno [, string errstr [, double timeout]]])
この関数は、ホスト hostname のポートへの TCP 接続を開きます。 hostname には、有効なドメイン名または IP アドレスを指定できます。 udp 接続の場合は、プロトコルを指定する必要があります: udp://hostname
UNIX ドメインの場合、ホスト名はソケットへのパスを使用します。この場合、ポートは 0 に設定する必要があります。
のオプションのタイムアウト パラメーターは、ソケットを開くまでの待機時間を秒単位で設定するために使用されます。
fsockopen() の詳細については、次を参照してください: h
ttp://www.php.net/manual/function.fsockopen.php
ネットワーク ニュース転送プロトコル
ニュースグループ サーバーにアクセスするには、NNTP (ネットワーク ニュース) と呼ばれるプロトコルが必要ですトランスポートプロトコル)。このプロトコル
は rfc977 で詳しく説明されており、http://www.w3.org/Protocols/rfc977/rfc977.html
で入手できます。このドキュメントでは、NNTP サーバーへの接続方法、サーバーとの通信方法、およびこれらのタスクを実行するためのさまざまなコマンドについて説明します。
接続
NNTP サーバーに接続するには、そのホスト名 (または IP アドレス) とリッスンしているポートを知っている必要があります。接続試行の失敗によるプログラムのハングを回避するには、タイムアウト パラメータを使用する必要があります。
$cfgServer = "your.news.host";
$cfgPort = 119;
$cfgTimeOut = 10;
// タイムアウトなしでソケットを開きます
if(!$cfgTimeOut)
// = fsockopen($cfgServer, $cfgPort);
else
// タイムアウトあり
$usenet_handle = fsockopen($cfgServer, $cfgPort, &$errno, &$errstr, $cfgTimeOut); echo "接続に失敗しました。n";
}
else {
$tmp = fgets($usenet_handle, 1024);
サーバーと通信します
これでサーバーに接続でき、前に開いたソケットを通じてサーバーと通信できるようになりました。たとえば、
特定のニュース グループから最新の 10 件の記事を取得したいとします。 RFC977 は、最初のステップは、GROUP コマンドを使用して
正しいニュースグループを選択することであると指摘しています:
GROUP ggg
http://www.bkjia.com/PHPjc/629321.html
www.bkjia.com
true
http://www.bkjia.com/PHPjc/629321.html