UDP используя сокет API - PullRequest
       13

UDP используя сокет API

0 голосов
/ 18 января 2010

Мой сервер использует UDP. Он отправляет 900 байт / 1 мс в мою программу автоматически после получения. Я использую сокет API в Windows (VB 6). Я сделал тест, и я знаю, что время обработки сообщения (около 0,3 мс) моей программы короче, чем время цикла (1 мс). Таким образом, причиной должен быть внутренний буфер сокета. Я пытаюсь вызвать функцию setsockopt, чтобы установить больший буфер:

setsockopt (SockNum, SOL_SOCKET, SO_RCVBUF, SockBuffer (1), 1048576)

но я все еще потерял данные. Как я могу исправить мою проблему? Я использую функцию recv для получения данных. Должен ли recvfrom быть лучше?

Еще один, мне нужно сделать буфер FIFO для UDP. Как я могу это сделать (алгоритмы или примеры)?

1 Ответ

1 голос
/ 18 января 2010

В вашем вопросе вы, похоже, жалуетесь на использование UDP и потерю данных.

Если вы используете UDP, вы потеряете данные. Чтобы избежать потери данных, используйте TCP, а не UDP. Если вы попытаетесь взять протокол пользовательских дейтаграмм и добавить к нему надежную доставку данных, вы получите что-то, что имеет все средства управления потоком и окна данных TCP ... за исключением того, что оно не будет реализовано так же, как ты хочешь.

Помните: «Те, кто не понимает TCP, обречены изобретать его ... плохо»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...