1

アプリケーションの他のインスタンスに接続するためにブロードキャストを送信しようとしています。Mac の Mono 3 コンソール プログラムで以下のコードを実行しています (ただし、Windows で VS2012 も試しました)。ただし、メッセージは決して受信されません。受信者はただそこに座って通話をブロックします

byte[] data = udpClient.Receive (ref endPoint);

編集:

私は試した:

var recipient = new IPEndPoint (new IPAddress(new byte[] {192, 255, 255, 255}), 1667);

また、追加されました

udpClient.EnableBroadcast = true;

送信者に。まだ: 何も受信していません。以上です。何か提案はありますか?

using System;
using System.Net.Sockets;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using System.Threading;

namespace NetworkServiceTest_Console
{
    class MainClass
    {
        public static void Main (string[] args)
        {
            Task.Run (() => Receiver ());
            Task.Run (() => {
                while(true)
                {
                    Sender ();
                    Thread.Sleep(1000);
                }
            });



            Console.ReadLine ();
        }

        static void Sender()
        {
            Console.WriteLine ("Sending...");
            var recipient = new IPEndPoint (IPAddress.Broadcast, 667);
            var udpClient = new UdpClient ();

            var data = Encoding.UTF8.GetBytes("Hallo world!");
            int bytesSent = udpClient.Send (data, data.Length, recipient);
            udpClient.Close ();
            Console.WriteLine ("{0} bytes sent", bytesSent);
        }

        static void Receiver()
        {
            Console.WriteLine ("Receiving...");
            var udpClient = new UdpClient ();
            var endPoint = new IPEndPoint(IPAddress.Any, 667);
            byte[] data = udpClient.Receive (ref endPoint);
            Console.WriteLine ("Received '{0}'.", Encoding.UTF8.GetString (data));
            udpClient.Close ();
        }
    }
}
4

2 に答える 2

1

そこには 2 つの問題が考えられます。

  1. に設定UdpClient.EnableBroadcastする必要がありtrueます。msdnを参照してください。
  2. 1024 未満のポートには特権があり、追加の権限が必要になる場合があります。1024 を超えるポートでテストします。

If it still doesn't work then use a network sniffer (e.g. wireshark) to analyze the traffic.

于 2013-10-02T22:31:26.013 に答える