ANTICHAT Forum
HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
НОВЫЕ ТОРГОВАЯ НОВОСТИ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #11  
Старый 29.08.2009, 20:23
slesh
Познавший АНТИЧАТ
Регистрация: 05.03.2007
Сообщений: 1,985
С нами: 10097606

Репутация: 3349


По умолчанию

Вот тебе сервак ответил
Цитата:
HTTP/1.1 400 Bad Request
Server: nginx/0.8.4
Date: Sat, 29 Aug 2009 16:12:16 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 172
Connection: close
Set-Cookie: stat_uid=X4H4WkqZU2CyHzfRB88RAg==; path=/

<html>
<head><title>400 Bad Request</title></head>
<body bgcolor="white">
<center><h1>400 Bad Request</h1></center>
<hr><center>nginx/0.8.4</center>
</body>
</html>
Content-Length: 172 - значит что после служебного залоговка (который оканчивается <CRLF><CRLF>) идет 172 байта данных.

Когда ты шлеш данные (POST запрос) то ты должен указать сколько данных шлеш. У тебя там правильно стояло
'Content-Length: '+inttostr(length(send))+#13#10#13#10+send;
 
Ответить с цитированием

  #12  
Старый 29.08.2009, 20:26
InfectedM
Познающий
Регистрация: 04.11.2007
Сообщений: 51
С нами: 9746190

Репутация: 6
По умолчанию

а как с помощью пост запроса указать сколько байт возвращать ?
весь результат POST запроса(вся страничка) весит 60500 байт ,а мне нужно от нее только 20000.

как вернуть определенное кол-во байт?
Idsock(20000) - возвращает почему-то максимум 2048

Последний раз редактировалось InfectedM; 29.08.2009 в 20:45..
 
Ответить с цитированием

  #13  
Старый 29.08.2009, 20:50
Ra$cal
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
С нами: 10386906

Репутация: 599


По умолчанию

читай в цикле. далеко не всегда возможно считать ответ за один вызов.
 
Ответить с цитированием

  #14  
Старый 29.08.2009, 21:00
InfectedM
Познающий
Регистрация: 04.11.2007
Сообщений: 51
С нами: 9746190

Репутация: 6
По умолчанию

если бы я знал как это)
Код:
 repeat
 
  Res := recv(Sock, Buf, size, 0);
  if Res = SOCKET_ERROR then Exit;
  if Res > 0 then Source := Source + Copy(Buf, 0, Res);
  until Res <= size;
считалось 2048, как начать считывать с 2048 до 4096
неужели только таким гемором по 2048 байт?

Последний раз редактировалось InfectedM; 29.08.2009 в 21:14..
 
Ответить с цитированием

  #15  
Старый 29.08.2009, 21:54
slesh
Познавший АНТИЧАТ
Регистрация: 05.03.2007
Сообщений: 1,985
С нами: 10097606

Репутация: 3349


По умолчанию

Я бы сказал, но промолчу, чтобы небыло обид ) Просто скажу что код кривой "чуть" т.е. нелогичный. Это будет правильнее
Код:
 size := сколько нужно считать
 fsize:=0; // типа сколько уже считано
 repeat
   Res := recv(Sock, Buf, size, 0);
   if Res = SOCKET_ERROR then break; // именно break потому как нужно выйти из цикла а не завершить всю обработку
   if Res > 0 then 
   begin
    fsize := fsize + Res; // увеличим счетчик того сколько мы всего считали
    Source := Source + Copy(Buf, 0, Res);
   end else break; 
  until fsize >= size; // типа читать пока данных меньше чем нами указано.
 
Ответить с цитированием

  #16  
Старый 29.08.2009, 22:05
InfectedM
Познающий
Регистрация: 04.11.2007
Сообщений: 51
С нами: 9746190

Репутация: 6
По умолчанию

завтра попробую щас уже на за компом где d,заранее огромное спасибо)
 
Ответить с цитированием
Ответ



Предыдущая тема Следующая тема
Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перехват данных: кто, где и как И.Г. Мировые новости. Обсуждения. 0 03.12.2006 22:46



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.