Как получить пакет последовательно, используя протокол UDP? - PullRequest
0 голосов
/ 17 января 2012

Я делаю заявку в C #. Я получаю данные на порт 24097 постоянно, и я записываю эти данные как

UdpClient client = null;
 IPEndPoint ipep = null;
 client = new UdpClient(24097); 
 client.Client.ReceiveBufferSize = 25000;
 ipep = new IPEndPoint(IPAddress.Any,24097);
while(flag)
{
  byte[] data= = client.Receive(ref ipep);
}

Но моя проблема в том, какие пакеты я получаю не в последовательном порядке. Я хочу получать их последовательно. Пожалуйста, помогите мне. Спасибо заранее.

Ответы [ 2 ]

5 голосов
/ 17 января 2012

UDP не гарантирует ничего о порядке данных, которые вы отправляете.Это «огонь и забудь».Если вам нужно хранить данные в упорядоченном потоке, вам нужно использовать TCP.

В противном случае вам потребуется реализовать какой-либо идентификатор последовательности в самих дейтаграммах.

1 голос
/ 17 января 2012

Эта ссылка может помочь

http://www.codeproject.com/Articles/176722/Sending-messages-to-workstations-using-Socket-Prog/?display=PrintAll&fid=1618703&df=90&mpp=25&noise=3&prof=False&sort=Position&view=Quick

Этот образец состоит из 2 частей.Первый - это отправитель (в некоторых компьютерах), а второй - получатель (в клиентских компьютерах).Указанный в отправителе порт должен совпадать с указанным в получателе.

В приложении отправителя есть текстовое поле и кнопка (Отправить).Запустите оба проекта на соответствующих компьютерах.

При нажатии кнопки «Отправить» в отправителе данные из текстового поля будут последовательно отправляться получателю.

Надеюсь, что он пригодится.Спасибо.

...