Witam wszystkich.
Piszę aplikację, która rozgłasza swoją obecność w sieci. Mój problem polega na tym, że gdy odłączę kabel sieciowy, klient (działający na tym samym hoście) nie odbiera żadnych wiadomości. Mogę oczywiście po obydwu stronach stworzyć po kolejnym wątku wysyłającym i odbierającym wiadomości na loopback, ale może ktoś wie jak stworzyć elegancki uniwersalny kod?
Kod, który wykonuje, wygląda mniej więcej tak:
var udp = new UdpClient { EnableBroadcast = true };
var epBcast = new IPEndPoint(IPAddress.Broadcast, 10600);
var serverString = "CostamDoRozgloszenia";
var bytes = Encoding.ASCII.GetBytes(serverString);
while (true)
{
udp.Send(bytes, bytes.Length, epBcast);
}
A po stronie klienta:
var udpClient = new UdpClient();
udpClient.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, 1);
udpClient.Client.ReceiveTimeout = 1000;
udpClient.Client.Bind(new IPEndPoint(IPAddress.Broadcast, 10600));
var iep = new IPEndPoint(IPAddress.Any, 0);
while (_doWork)
{
try
{
_receivedData = _udpClient.Receive(ref iep);
}
catch (SocketException e)
{
if (e.SocketErrorCode != SocketError.TimedOut) throw;
continue;
}
}
Z góry dzięki za wszelkie sugestie.