2016-07-24 33 views
1

2つの別々のプログラムを使用して同じマシンからUDPパケットを送受信しようとしていますが、これまで何も受信できませんでした。私はファイアウォールを完全に無効にしようとしましたが、それでも機能しませんでした。プログラムUDPパケットを受信できません

プログラム

var receiver = new UdpClient(2055); 

var endPoint = new IPEndPoint(IPAddress.Any, 2055); 
var data = receiver.Receive(ref endPoint); 
System.Console.WriteLine("Data received"); 

を受け

var sender = new UdpClient(Dns.GetHostName(), 2055); 

var data = new byte[] { 0, 1, 2, 3, 4, 5 }; 
sender.Send(data, data.Length); 

を送信

私もコピーして貼り付け、このチュートリアルhttp://www.codeproject.com/Articles/10649/An-Introduction-to-Socket-Programming-in-NET-usingからコードをし、まだ成功していませんしました。

+1

'Dns.GetHostName()'とは何ですか? '127.0.0.1 'でないはずですか? –

+0

ああ、これはうまくいった!答えを投稿して(ソリューションとして選択できるように)、Dns.GetHostName()ではなく、なぜこれが機能するのかを少し説明できますか?私は、GetHostName()を同じマシン上のTCP接続に使っていました。 –

+0

確かに、私たちが手伝ってくれてうれしいです:) –

答えて

0

問題は、あなたが同じマシン上にあるので、127.0.0.1あるローカルホストのIPを指定する必要がvar sender = new UdpClient(Dns.GetHostName(), 2055);

です。これはうまくいくはずです:

var sender = new UdpClient("127.0.0.1", 2055);

0

About multicast IP addresses and ports (TechNet)から:239.255.255.255介して224.0.0.0とFF00:0000:0000:0000:0000:0000:0000

マルチキャストIPアドレスは、二つの範囲内のクラスDアドレスであります:0000〜FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF。第1の範囲内のアドレスは、インターネットプロトコルバージョン4(IPv4)アドレスである。第2の範囲内のアドレスは、インターネットプロトコルバージョン6(IPv6)アドレスである。

イントラネットで使用する場合は、239. の範囲のIPv4アドレスを使用することをお勧めします。。*。ポート番号の範囲は1〜65535です。コンテンツを送信するネットワーク上のルータは、マルチキャスト対応にする必要があります。つまり、クラスDのアドレスを解釈できる必要があり、マルチキャスト情報を転送できなくてはなりませんクライアントに。

ネットワークレベルのフィルタリングのため、この範囲のIPアドレスを使用する必要があります。ウィキペディアにはcommonly-used multicast addressesという表があります。

実際には、あまりにもあなたがノートにこれを使用しているチュートリアル:

はUDPも、すなわち、複数の受信者に単一のデータグラムを送信するマルチキャストをサポートしています。これを行うために、送信者は224.0.0.1 - 239.255.255.255(クラスDアドレスグループ)の範囲のIPアドレスにパケットを送信します。

+0

答えをありがとうが、私はこの問題がローカルホストアドレスを使用して問題を解決して以来、同じマシン上で送受信している私の問題にどのように作用するのかよく分かりません。 –

関連する問題