Я пытаюсь проверить связь UDP в локальной сети.У меня есть небольшой фрагмент кода, и я попытался запустить его на 2 компьютерах (один должен ждать, чтобы получить, а другой должен отправить).Странно то, что компьютер A отправляет, а B получает должным образом, но если я попытаюсь A получить и B отправить, это не сработает.Вы знаете, почему это может быть?
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 пакета за вызов.
Заранее спасибо.