Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C/C++ Сетевое программирование
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.09.2011, 20:47   #1
Gvaler
Новичок
Джуниор
 
Регистрация: 30.09.2009
Сообщений: 2
Вопрос Не получается принять TCP/IP пакет более 2048 байт. Visual C++

Использую MFC. Имеется UDP-сокет (CAsyncSocket). При приходе пакета длиной более 2048 байт функция ReceiveFrom возвращает SOCKET_ERROR, а GetLastError при этом определяет, что ошибка следующая: WSAEMSGSIZE (10040) - "A message sent on a datagram socket was larger than the internal message buffer or some other network limit, or the buffer used to receive a datagram into was smaller than the datagram itself".

Установка опции сокета
int RcvBufSize = 0x3000;
pSocket->SetSockOpt(SO_RCVBUF, &RcvBufSize, sizeof(RcvBufSize), SOL_SOCKET)
не помогает (если ничего не устанавливать, то по умолчанию 8192 байта).
Gvaler вне форума Ответить с цитированием
Старый 25.09.2011, 11:28   #2
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

Цитата:
Сообщение от MSDN
For datagram sockets, data is extracted from the first enqueued datagram, up to the size of the buffer supplied. If the datagram is larger than the buffer supplied, the buffer is filled with the first part of the message, the excess data is lost, and ReceiveFrom returns a value of SOCKET_ERROR with the error code set to WSAEMSGSIZE
что передаете? размер данных соответствует?
counter вне форума Ответить с цитированием
Старый 27.09.2011, 09:28   #3
dixonich
Пользователь
 
Регистрация: 11.10.2009
Сообщений: 79
По умолчанию

попробуйте разбить пакет по 1024 байта и принимать в массив, а потом уже склеить и что-то с ним делать.
dixonich вне форума Ответить с цитированием
Старый 28.09.2011, 23:00   #4
Gvaler
Новичок
Джуниор
 
Регистрация: 30.09.2009
Сообщений: 2
По умолчанию

Проблема решилась - откровенно ступил, не заметив сразу что буфер для приёма данных объявлен длиной 2048 байта.
Gvaler вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не получается создать удалённое сетевое подключение между двумя компами по протоколу TCP anyx Свободное общение 3 31.05.2011 20:55
Как принять пакет с сервера Federal Работа с сетью в Delphi 1 31.05.2010 09:02
Создать tcp/ip пакет heart Помощь студентам 6 12.03.2009 16:04
Hello, World! размером не более 46 байт romark Помощь студентам 4 24.12.2008 11:27
Отправить , а потом принять пакет. casper123 Работа с сетью в Delphi 3 16.08.2008 02:56