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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.01.2012, 04:52   #1
LostName
 
Регистрация: 17.01.2012
Сообщений: 3
Печаль Проблема с recv

Пишу обычную стучалку на гейт,прожка отправляет на него определённые данные и получает результат выданный скриптом.
С отправкой всё нормально,но вот с приёмом время от времени жёсткие траблы.

Отправка\Приём
Код:
send(sSock, szParam, strlen(szParam), 0);
while(int i = recv(sSock, szBuff,sizeof(szBuff),  0))
{
     if (i == SOCKET_ERROR) return -1; 
}
MessageBoxA(0,szBuff,0,0);
Вот такой результат выдаёт программа при обычном запуске -


А вот такой,если я трейсю это дело в отладчике -


Помогите разобратся в чём дело

Последний раз редактировалось LostName; 17.01.2012 в 05:30.
LostName вне форума Ответить с цитированием
Старый 17.01.2012, 10:16   #2
Rock-n-Rolla
Форумчанин
 
Регистрация: 11.01.2012
Сообщений: 177
По умолчанию

Цитата:
Сообщение от LostName Посмотреть сообщение
Отправка\Приём
Код:
send(sSock, szParam, strlen(szParam), 0);
while(int i = recv(sSock, szBuff,sizeof(szBuff),  0))
{
     if (i == SOCKET_ERROR) return -1; 
}
MessageBoxA(0,szBuff,0,0);
по этому коду вообще ничего не понятно. понятно лишь то что отправка и получение данных происходит успешно

скорее всего проблема в самом HTTP-запросе или его обработчике на сервере
progromore.i2p - первый русскоязычный портал программистов в скрытосети
Rock-n-Rolla вне форума Ответить с цитированием
Старый 17.01.2012, 10:36   #3
LostName
 
Регистрация: 17.01.2012
Сообщений: 3
По умолчанию

Вот те данные которые я отправляю -
Код:
GET //indezx.php?=bla
User-Agent: USER_A
Host: site.com
Вот что приходит -
Код:
HTTP/1.1 200 OK
Server: nginx/1.0.11
Date: Tue, 17 Jan 2012 06:29:57 GMT
Content-Type: text/html
Connection: close
X-Powered-By: PHP/5.3.8-1~dotdeb.2
Vary: Accept-Encoding
Content-Length: 36

тут данные полученные от скрипта
Я же написал что при обычном запуске данные принимаются в перемешку,а когда я приём трейсю в отладчике - всё ок.
Собственно мне и интересно в чём причина этих "аномалий".

Последний раз редактировалось LostName; 17.01.2012 в 10:40. Причина: Очепятки
LostName вне форума Ответить с цитированием
Старый 17.01.2012, 19:07   #4
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Данные могут приходить кусками, потому нужно дополнять буфер, а Вы каждый раз передаёте указатель на начало буфера. Нужно контролировать количество полученных данных и передавать адрес буфера с соответствующим смещением
Код:
recv(sSock, &szBuff[received], buffer_size - received, 0)
netrino вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
recv socket cppn00b Visual C++ 5 03.04.2011 15:19
сервер-клиент, recv-send и проблема с передаваемыми символами. Ksardas13 Общие вопросы C/C++ 9 27.03.2011 20:49
recv Function Dimarik Win Api 2 04.04.2010 11:53
Зацикливается recv. asdo Общие вопросы C/C++ 4 23.01.2010 23:38
recv() Артэс C/C++ Сетевое программирование 7 15.01.2010 14:51