1

ソケットを使用して PHP (残念ながら PHP でなければなりません) を使用して単純なアプリケーションを実装しようとしています。私は1つのページを持っています.multi.phpとページclient.phpの多くのインスタンスとしましょうファイルやデータベースなしでmulti.phpの1つのインスタンスからclient.phpのすべてのインスタンスにデータを送信したくありません.

マルチキャスト (マルチキャスト アドレスを使用して multi.php からデータを送信) を使用して実行しようとしましたが、機能しません。client.php のどのインスタンスとも通信できません

前もって感謝します

4

2 に答える 2

4

私は現在、個人使用のためにPHPでクラスを構築しています。このクラスでは、MediaRender デバイスを制御します。mSearch メソッドでは、PHP でマルチキャスト効果を実現する方法の例を見ることができます。

    // BUILD MESSAGE
    $msg  = 'M-SEARCH * HTTP/1.1' . "\r\n";
    $msg .= 'HOST: 239.255.255.250:1900' ."\r\n";
    $msg .= 'MAN: "'. $man .'"' . "\r\n";
    $msg .= 'MX: '. $mx ."\r\n";
    $msg .= 'ST:' . $st ."\r\n";
    $msg .= 'USER-AGENT: '. static::USER_AGENT ."\r\n";
    $msg .= '' ."\r\n";

    // MULTICAST MESSAGE
    $sock = socket_create( AF_INET, SOCK_DGRAM, 0 );
    $opt_ret = socket_set_option( $sock, 1, 6, TRUE );
    $send_ret = socket_sendto( $sock, $msg, strlen( $msg ), 0, '239.255.255.250', 1900);

    // SET TIMEOUT FOR RECIEVE
    socket_set_option( $sock, SOL_SOCKET, SO_RCVTIMEO, array( 'sec'=>$sockTimout, 'usec'=>'0' ) );

    // RECIEVE RESPONSE
    $response = array();
    do {
        $buf = null;
        @socket_recvfrom( $sock, $buf, 1024, MSG_WAITALL, $from, $port );
        if( !is_null($buf) )$response[] = $this->parseMSearchResponse( $buf );
    } while( !is_null($buf) );

    // CLOSE SOCKET
    socket_close( $sock );

https://github.com/artheus/PHP-UPnP/blob/development/phpupnp.class.php

于 2012-11-05T09:06:24.017 に答える
0

現在、PHPでマルチキャストを行うことはできません。http://bugs.php.net/bug.php?id=40510を参照してください

できることは、すべてのソケットに同じデータを送信することです。接続を受け入れる1つのサーバープロセス(multi.php)があります。このプロセスは、開いているすべての接続に同じデータを送信するだけです。これはあなたが達成しようとしていることですか?

于 2011-06-09T19:40:48.937 に答える