Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|

29.08.2009, 20:23
|
|
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме: 3288241
Репутация:
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;
|
|
|

29.08.2009, 20:26
|
|
Познающий
Регистрация: 04.11.2007
Сообщений: 51
Провел на форуме: 310791
Репутация:
6
|
|
а как с помощью пост запроса указать сколько байт возвращать ?
весь результат POST запроса(вся страничка) весит 60500 байт ,а мне нужно от нее только 20000.
как вернуть определенное кол-во байт?
Idsock(20000) - возвращает почему-то максимум 2048
Последний раз редактировалось InfectedM; 29.08.2009 в 20:45..
|
|
|

29.08.2009, 20:50
|
|
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
Провел на форуме: 1354067
Репутация:
599
|
|
читай в цикле. далеко не всегда возможно считать ответ за один вызов.
|
|
|

29.08.2009, 21:00
|
|
Познающий
Регистрация: 04.11.2007
Сообщений: 51
Провел на форуме: 310791
Репутация:
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..
|
|
|

29.08.2009, 21:54
|
|
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме: 3288241
Репутация:
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; // типа читать пока данных меньше чем нами указано.
|
|
|

29.08.2009, 22:05
|
|
Познающий
Регистрация: 04.11.2007
Сообщений: 51
Провел на форуме: 310791
Репутация:
6
|
|
завтра попробую щас уже на за компом где d,заранее огромное спасибо)
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|