@Senture

UDP Multicast Приём данных от сервера без задержек?

Доброго времени суток!
Ситуация следующая.
Отправка данных мультикастом:
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. Спасибо всем огромное!
  • Вопрос задан
  • 656 просмотров
Решения вопроса 1
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
UDP не гарантирует доставку. Что пришло то пришло.
А вы уж оперируйте буфером приема, Возможно стоит добавить время отправки и вставлять пропущенные пакеты.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы