LAN上でUDP通信をテストしようとしています。私は小さなコードを持っています。私は2台のコンピュータでそれを実行しようとしました(1つは受信するのを待つ必要があり、もう1つは送信する必要があります)。奇妙なことは、コンピュータAが送信し、Bが正しく受信されますが、受信しようとすると送信するBを実行しようとすると動作しません。あなたはなぜそれができるのか知っていますか?.NETでUDPパケットを送受信する
public void SendBroadcast(int port, string message)
{
UdpClient client = new UdpClient();
byte[] packet = Encoding.ASCII.GetBytes(message);
try
{
client.Send(packet, packet.Length, IPAddress.Broadcast.ToString(), port);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
public void Receive(int port)
{
UdpClient client = null;
try
{
client = new UdpClient(port);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
IPEndPoint server = new IPEndPoint(IPAddress.Any, 0);
while (true)
{
try
{
byte[] packet = client.Receive(ref server);
Console.WriteLine("{0}, {1}", server, Encoding.ASCII.GetString(packet));
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
そして通話:
SendBroadcast(444, "hello"); Receive(444);
私は、同じコンピュータ上のプログラムの2つのインスタンスを実行する場合、それは正常に動作しますが、呼び出しごとに3つのパッケージを作成します。
ありがとうございます。
IPアドレスを明示的に指定し、ブロードキャストに依存しないことは両方向で行いますか? – Tremmors