Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Пакеты UDP в TNMUDP [D5, Win95/98, Win2k]


grvakh ©   (2004-04-16 10:42:00) 

При превышении пакетом на отправляющей стороне размера 2048 на принимающей сторне в поле NumberBytes процедуры события DataReceived получается значение -1.

Можно ли с этим бороться? Без перехода на др. версии и др компоненты?  И вообще - с чем это связано?


Verg   (2004-04-16 10:57:00) [1]


>  И вообще - с чем это связано?


С размером буфера у самой компоненты при приеме из сокета.

var buffer : array[0..2047] of byte;

result := recv(UDPSocket, buffer, sizeof(buffer), 0);

если в сокете сидит датаграмма размером больше, чем sizeof(buffer), то Recv вернет SOCKET_ERROR (-1), при этом WSAGetLastError вернет WSAEMSGSIZE. Кстати, при этом  первые sizeof(buffer) байт из той длинной датаграммы таки будут скопированы в buffer.

Вот и все.
Размер приемного буфера у этой компоненты по-моему не регулируется.


Наверх

Титульная страница Поиск, карта сайта Написать письмо