У меня есть веб-сервис, написанный на .net на удаленном компьютере с IIS. Я пытаюсь подключиться к нему с помощью программы C, используя socker для выполнения SOAP-запроса.recv останавливает или не возвращает все данные (код C)
Моя проблема заключается в том, что у меня есть некоторые probem получающее данные:
Цикл приема данных не работает таким образом, или в другом.
Если я пишу:
nByte = 1;
while(nByte!=512)
{
nByte = recv(sockfd,buffer,512, 0);
if(nByte < 0)
{
// check the error
}
if(nByte > 0)
{
// append buffer to received data
}
}
иногда не возвращает все данные, если его запустить без отладчика и breackpoints.
Если я попытаюсь: while(nByte!=0)
в конце данных он заглох и по ошибке.
Как это должно быть сделано? Спасибо, Antonino
** EDIT ** я решил мою ситуацию по-другому, я проверяю возвращаемое значение для конца мыло XML:
nByte = 1;
while(nByte!=0)
{
nByte = recv(sockfd,buffer,512, 0);
if(nByte < 0)
{
// check the error
}
if(nByte > 0)
{
// append nByte buffer to received data
if(strstr("</soap:Envelope>", buffer) != NULL)
break;
}
}
Это очень грустно .. .
таким образом, он получает только READSIZE байтов, я хочу загрузить весь поток, пока соединение не закрыто, но он никогда не вернется 0. – Perry
увидеть теперь после редактирования – theWalker
«таким образом, он получает только READSIZE байт» - нет, мы читаем все, но не всегда возвращаем все сокеты, и в моем ответе мы должны прочитать больше – theWalker