Получали ли UDP Sockets Decalate данные в различные сообщения или ReCV читает как можно больше данных одновременно?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Получали ли UDP Sockets Decalate данные в различные сообщения или ReCV читает как можно больше данных одновременно?

Сообщение Anonymous »

Допустим, у меня есть заявка отправителя и заявление на приемник, который общается через UDP. Сначала я отправляю эти 15 байтов: < /p>

Код: Выделить всё

[MYHEADER]hello< /code> < /p>

...Then после этого я отправляю еще 15 байт: < /p>

[MYHEADER]world< /code> < /p>

Теперь, в приложении приемника, я слушаю в том же порту с сокетом UDP, который связан с тем же адресом. Допустим, что оба сообщения появились (и в одном и том же порядке), так как в последний раз я проверял сокет приемника. Опрос сокета для входящих данных Каждый кадр: < /p>

uint32 PendingSize;
while (Socket->HasPendingData(PendingSize))
{
uint32 BytesRead;
uint8 MessageData[kMaxMessageSize];

if (Socket->Recv(MessageData, kMaxMessageSize, BytesRead))
{
// Do stuff here
// Will BytesRead be equal to PendingSize?
}
}
< /code>

HasPendingData
завершает вызов в ioctlsocket с помощью fionread , возвращая, ожидает ли данные в буфере приема и заполняет pendingsize с номером ожидающих байтов. Recv вызывает recv , чтобы прочитать эти данные в буфер, который я могу прочитать. Если он возвращает true, то я отвечаю на полученные данные. < /P>

Вот мой вопрос. Какой из этих сценариев точно отражает то, что произойдет в этой ситуации?
  • Код: Выделить всё

    HasPendingData
    возвращает True и показывает ожидающий размер 15 байтов. Recv дает мне сообщение [myheader] hello .
  • Код: Выделить всё

    HasPendingData
    возвращает True и показывает ожидающий размер 15 байтов. Recv дает мне сообщение [myheader] World .
  • Код: Выделить всё

    HasPendingData
    возвращает false.
опция b.


[*]

Код: Выделить всё

HasPendingData
возвращает true и показывает ожидающий размер 30 байтов. Recv дает мне сообщение [myheader] hello [myheader] World .
HasPendingData< /code> возвращает false. < /li>
< /ol>

Любое понимание ценится. Спасибо!

Подробнее здесь: https://stackoverflow.com/questions/261 ... -recv-read
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Когда iOS 17 отправляет UDP, System Net Sockets SocketException (65): Norout на хост
    Anonymous » » в форуме IOS
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous
  • UDP-клиент не печатает полученные сообщения с udp-сервера
    Anonymous » » в форуме C#
    0 Ответы
    25 Просмотры
    Последнее сообщение Anonymous
  • Отбрасываются ли пакеты UDP, если контрольная сумма заголовка UDP неверна?
    Anonymous » » в форуме C++
    0 Ответы
    47 Просмотры
    Последнее сообщение Anonymous
  • Скорость отправки UDP на F1 UDP и последовательном порту
    Anonymous » » в форуме C#
    0 Ответы
    36 Просмотры
    Последнее сообщение Anonymous
  • Скорость отправки UDP на F1 UDP и последовательном порту
    Anonymous » » в форуме C#
    0 Ответы
    39 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»