私は .NET 2.0 を使用しており、かなり単純な udp ブロードキャスト アプリと UDP リスナーを作成しました。
リスナー コード:
Socket listener = new Socket( AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp );
IPEndPoint localEndPoint = new IPEndPoint( IPAddress.Any, 11000 );
listener.Bind( localEndPoint );
EndPoint ep = (EndPoint)localEndPoint;
Console.WriteLine("Ready to receive…");
byte[] data = new byte[1024];
int recv = listener.ReceiveFrom(data, ref ep);
string stringData = Encoding.ASCII.GetString(data, 0, recv);
Console.WriteLine("received: {0} from: {1}", stringData, ep.ToString());
listener.Close();
サーバーコード:
int groupPort = 11000;
IPEndPoint groupEP = new IPEndPoint( IPAddress.Parse( "255.255.255.255" ), groupPort );
if ( radioButton2.Checked )
{
groupEP = new IPEndPoint( IPAddress.Broadcast, groupPort );
}
else if ( radioButton3.Checked )
{
groupEP = new IPEndPoint( IPAddress.Parse( "172.16.75.15" ), groupPort );
}
Socket socket = new Socket( AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp );
socket.SetSocketOption( SocketOptionLevel.Socket, SocketOptionName.Broadcast, 1 );
socket.SendTo( System.Text.ASCIIEncoding.ASCII.GetBytes( testTextBox.Text ), groupEP );
サーバーは、3 つのラジオ ボタン、ボタン、およびテキスト ボックスを備えた単純な Windows アプリです。
別のコンピューターでサーバーを実行し、radioButton3 を選択すると、クライアント リスナー (IP アドレス 172.16.75.15 で実行されている) で問題なくメッセージを受信します。ただし、最初または 2 番目のラジオボタン (IP アドレスとしてブロードキャストまたは 255.255.255.255 を作成する) を選択すると、何も表示されません。サーバーと同じPCでクライアントを実行すると、これら2つの選択肢を使用してメッセージを受信できます。
何が間違っているのか、またはLAN上のUDPメッセージを防止する何らかのファイアウォールが存在する可能性があるかどうかはわかりません. 何か案は?
ありがとう、
クレイグ