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