ホームページ > バックエンド開発 > PHPチュートリアル > 分析: PHP ソケットと Telnet_PHP を使用した簡単なチャット プログラムの実装チュートリアル

分析: PHP ソケットと Telnet_PHP を使用した簡単なチャット プログラムの実装チュートリアル

WBOY
リリース: 2016-07-21 15:06:04
オリジナル
884 人が閲覧しました

以下は、PHP のソケット拡張モジュールを通じて実装された単純なメッセージ処理サーバーです。ローカル ポートにバインドし、クライアント接続をリッスンし、データを受信して​​、送信者を除くすべてのクライアントに転送します
socket_server。コード
コードは次のとおりです:

#!/usr/bin/env php//author:zhxia
if(!extension_loaded('sockets')){
die ('ソケット拡張機能が読み込まれていません!');
}
const PORT=9981;
$socket=socket_create(AF_INET,SOCK_STREAM,SOL_TCP) or die('socket create error!');
#このオプションを設定すると、ポートを再利用します
socket_set_option ($socket,SOL_SOCKET,SO_REUSEADDR,1);
socket_bind($socket,0,PORT);
socket_listen($socket);
#ノンブロッキングモードを使用する
socket_set_nonblock($socket);
echo 'ポートでリッスン' .PORT.'...'.PHP_EOL;
$clients=array($socket);
while(TRUE){
$read=$clients;
$write=$excel=array(); C // コールスルーソケットのステータスが変更されたかどうかを検出するシステムを選択します。
if(in_array($socket,$read)){
$clients[]=$newsocket=socket_accept($socket);
ソケット_write($newsocket,"ようこそ!そこには「.(count($clients)-1 . ]);
}

foreach($read as $read_socket){
$data=@socket_read($read_socket,1024,PHP_NORMAL_READ);
if($data===false){
切断
$key=array_search($read_socket,$clients) ;

P if (! Empty ($ data)) {
Foreach ($ Clients as $ wソケット) {
// Elimサーバーとそれ自体を起動し、すべてのサーバーにデータを送信します。他のクライアント
($ ion_socket == $ソケット | |$write_socket==$read_socket){
}
}
}socket_close($socket);




サーバーを起動します:

zhxia@zhxia-pc:~ /sh/php$ ./socket_server.php
ポート 9981 でリッスン...


Telnet 経由で接続しています:

zhxia@haozudb:~$ telnet 192.168.187.16 9981
192.168.187.16 を試行しています...
192.168.187.16 に接続しています。
エスケープ文字は '^]' です。来てください
1つありますクライアントはこちら




http://www.bkjia.com/PHPjc/327639.html

www.bkjia.com


本当
http://www.bkjia.com/PHPjc/327639.html

技術記事

以下は、PHP のソケット拡張モジュールを通じて実装された単純なメッセージ処理サーバーです。ローカル ポートにバインドし、クライアント接続をリッスンし、データを受信して​​送信者に転送します...



ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート