データグラムソケットでこの奇妙な問題が発生しました。基本的に私がやっているのは、自分のアプリケーションが実装しているサービスをアナウンスし、同じネットワーク上の他のインスタンスとそのサービスを発見できるクラスを構築することです。 DatagramSocketクラスを使用してパケットを255.255.255.255にブロードキャストし、ネットワーク上の他のアプリケーションがそれに応答します。 これは、電話機のアプリケーションがデスクトップ上のアプリケーションを検出しようとしているときに完全に機能します。しかし、デスクトップ上のアプリは私の電話でそれを発見することはできません。 wiresharkを実行してパケットを監視していますが、電話機がパケットを期待通りに送信していますが、デスクトップアプリケーションはパケットを送信しません。 私は、アプリが自分のデスクトップからブロードキャストパケットを送信できないが、それが自分の携帯電話から実行されているときにそうすることができる理由があるかどうかを調べようとしていますか?DatagramSocketは電話でブロードキャストパケットを送信できますが、PCではブロードキャストパケットを送信できません
Windowsファイアウォールをオンまたはオフにしてコードをテストしました(使用しているファイアウォールのみ)。私はこの上をテストしている
デバイスは、以下のとおりです。
- Lumia 950XL(Win10 V1607は14393の構築) -
- 表面帳(Win10 1607ビルド14393)をブロードキャストすることができます -
- HP AIOをブロードキャストすることはできません : - (Win10 1607ビルド14393)ここで
をブロードキャストすることはできませんが、私は、パケットをブロードキャストするために使用していたコードです
'advertiserPort'と 'finderPort'はそれぞれ '1994'と '2206'として事前定義されています。 'BroadcastAddress'は255.255.255.255
です。Edit:私は同じ結果をMicrosoftから提供されたDatagramSocketサンプルも試しました。このサンプルは、PC上で実行しているときに何もブロードキャストできず、wiresharkはパケットが送信されていないことを示します。
正しいポート番号でIPAnyを使用してパケットをリスンする必要があります。 – jdweng
@jdwengあなたはもっと説明できますか?私はMSが提供したUWPサンプルに従った。それでもサンプルは機能しません。 – Rafael
IPEndPoint localEndPoint =新しいIPEndPoint(IPAddress.Any、1994); – jdweng