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

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

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.08.2013, 17:23   #1
MegabyteS
Новичок
Джуниор
 
Регистрация: 06.08.2013
Сообщений: 2
Вопрос проблема при вызове recv

Не получается найти проблему, может кто встречался с таким.
При получении ответа на http запрос на некой итерации (я заметил что должна быть последней итерацией) при вызове recv напрочь зависает выполнение, при этом я заметил размер последних не полученных данных меньше буфера, пока данные размером с буфер прекрастно читаются. В чем может быть загвоздка?

кусок кода :

repeat

FillChar(Buffer2,SizeOf(Buffer2),0) ;
d:=recv(Socket1,Buffer2,SizeOf(Buff er2),0);

for i:=0 to d do s:=s+Buffer2[i];

until d<=0;
MegabyteS вне форума Ответить с цитированием
Старый 06.08.2013, 20:05   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Return Values

If no error occurs, recv returns the number of bytes received. If the connection has been gracefully closed, the return value is zero. Otherwise, a value of SOCKET_ERROR is returned, and a specific error code can be retrieved by calling WSAGetLastError.
Вывод: При проверке на полученный размер если он равен SOCKET_ERROR, нужно использовать функцию WSAGetLastError() для получения кода ошибки, и выяснения по этому коду причины.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.08.2013, 14:26   #3
MegabyteS
Новичок
Джуниор
 
Регистрация: 06.08.2013
Сообщений: 2
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Вывод: При проверке на полученный размер если он равен SOCKET_ERROR, нужно использовать функцию WSAGetLastError() для получения кода ошибки, и выяснения по этому коду причины.
WSAGetLastError() выдает 0
SysErrorMessage(GetLastError) выдает "операция успешно завершена"


похоже на то, что сервер перестает отвечать после того как все выдает в сокет.

Последний раз редактировалось MegabyteS; 07.08.2013 в 14:43.
MegabyteS вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ошибка при вызове процедуры Emperator12 Общие вопросы Delphi 8 22.09.2012 00:52
Проблема с recv LostName C/C++ Сетевое программирование 3 17.01.2012 19:07
не хватает ОП при вызове imagecreatefromjpeg SkrudjMakdak PHP 5 10.08.2011 16:36
сервер-клиент, recv-send и проблема с передаваемыми символами. Ksardas13 Общие вопросы C/C++ 9 27.03.2011 20:49
Ошибка при вызове openFileDialog ---FISHER--- C# (си шарп) 7 02.03.2011 13:25