Доброго времени суток!
Ситуация следующая.
Отправка данных мультикастом:
socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
IPAddress ip = IPAddress.Parse(GlobalData.Address);
socket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, new MulticastOption(ip));
socket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.MulticastTimeToLive, GlobalData.TTL);
IPEndPoint endPoint = new IPEndPoint(ip, GlobalData.Port);
socket.Connect(endPoint);
socket.Send(_byte, _byte.Length, SocketFlags.None);
Код клиента:
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
endPoint = new IPEndPoint(IPAddress.Any, GlobalData.Port);
socket.Bind(endPoint);
address = IPAddress.Parse(GlobalData.Address);
socket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership,
new MulticastOption(address, IPAddress.Any));
while(true)
{
....
socket.Receive(b);
....
Thread.Sleep(1000);
}
Сервер отправляет данные каждые 100мс, клиент принимает данные каждые 1000мс. Так как клиент не успевает(специально сделано) за данными от сервера, пока клиент спит, сервер отправит 10 сообщений, и когда клиент снова начинает получать данные, он получит не 11 сообщение от сервера а 1(т.е. следующее после последнего полученного), а мне нужно что бы клиент после сна пропускал те 10 сообщений которые сервер отправил пока клиент был в спячке.
Подскажите пожалуйста, в какую сторону мне копать?
UDP, Multicast и Sleep(на клиенте) обязательны.
P.S. Спасибо всем огромное!