ブロードキャストUDPメッセージをC#アプリケーションに送信しようとしています。私はメッセージを送るために次のコードを試しました。私はa commentからsocket_sendto manual pageにphp.netウェブサイトで見つけました。UDPブロードキャストをPHPから送信し、C#で受信する
<?php
$sock = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
socket_set_option($sock, SOL_SOCKET, SO_BROADCAST, 1);
socket_sendto($sock, $broadcast_string, strlen($broadcast_string), 0, '255.255.255.255', $port);
?>
これは私にとってはうまくいかず、多分私のネットワークです。
ブロードキャストIP '255.255.255.255'
を私の特定のIPに置き換えると動作します。 '192.168.1.128'
。私はWiresharkでこのメッセージが入ってくるのを見ることができますが、私は上記のコードを使って見ることができません。これは、コードのPHP側に何か問題があると私に信じさせます。
);私は本当に放送や私のプログラムのためのマルチキャストのいくつかの種類を使用したいので、私は現時点で立ち往生少しです
UdpClient subscriber = new UdpClient(15000);
IPEndPoint ep = new IPEndPoint(IPAddress.Any, 15000); ;
byte[] pdata = subscriber.Receive(ref ep);
string data = Encoding.ASCII.GetString(pdata);
MessageBox.Show(data);
subscriber.Close();
何が原因である可能性がありますか?
はこちらです。 'socket_sendto'の戻り値は何ですか? – Artefacto
allreadyを修正しました。私は '255.255.255.255'の範囲にUDPパッケージを送ることはできないと思うが、PHPサーバのipアドレスはLANの範囲にある。サブネットマスクが「255.255.255.0」の「192.168.1。*」となります。この問題を回避するために、私はパッケージを '192.169.1.255'の範囲に送りました。 )なぜこれが実際にそうであるのかを説明する回答はまだあります;) – Bravoman
@Artefactoはちょうどキックのためにもう一度試しました... '255.255.255.255'への返送値は、UPDパケットが私に届かなくても正の整数ですクライアントコンピュータ。 – Bravoman