我正在尝试使用带有套接字的 PHP(不幸的是它必须在 PHP 中)来实现简单的应用程序。我有一个页面 - 假设 multi.php 和页面 client.php 的许多实例我不想从一个没有文件或数据库的 multi.php 实例向 client.php 的所有实例发送一些数据。
我尝试使用多播(使用多播地址从 multi.php 发送一些数据)来做到这一点,但它不起作用。我无法与 client.php 的任何实例通信
先感谢您
我正在尝试使用带有套接字的 PHP(不幸的是它必须在 PHP 中)来实现简单的应用程序。我有一个页面 - 假设 multi.php 和页面 client.php 的许多实例我不想从一个没有文件或数据库的 multi.php 实例向 client.php 的所有实例发送一些数据。
我尝试使用多播(使用多播地址从 multi.php 发送一些数据)来做到这一点,但它不起作用。我无法与 client.php 的任何实例通信
先感谢您
我目前正在用 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
您现在不能使用 PHP 进行多播。见http://bugs.php.net/bug.php?id=40510
您可以做的只是将相同的数据发送到所有套接字。您有一个服务器进程 (multi.php) 接受连接。这个过程只是将相同的数据发送到所有打开的连接。这是你试图达到的目标吗?