Как узнать размер входящего пакета UDP от сервера?

Рейтинг: 0Ответов: 1Опубликовано: 19.04.2011

Для затравки - компонента Indy - IdUDPClient. В скором времени планирую переписать под API, но тем не менее, даже быстрое гугление по АПИ сокетов не подсказало, как можно узнать длину входного пакета.

Правда просматривая сниффером входящие пакеты, понял, что в первых 20-ти байтах содержится информация об этом пакете, в т.ч. и его длина, но я не знаю, как распарсить его. Подскажите?

Ответы

▲ 1Принят

В recvfrom(sock, buf, bufsize, flags, &from, &fromlen) просим большое число (bufsize) (в большой буфер). Большой - значит больше, чем максимально возможный UDP пакет. Вернет длину очередного пакета и поместит его в буфер. В from и fromlen вернет адрес сервера (IP:Port) и длину этого адреса (ну для IP это не интересно). Подробнее man 2 recvfrom. В принципе, в винде д.б. очень похоже.