Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.01.16;
Скачать: CL | DM;

Вниз

ClientSocket получает не полный ответ Help!!!   Найти похожие ветки 

 
alekseyii ©   (2010-10-05 09:56) [0]

Здравствуйте товарищи!!!
У меня проблема нужно постоянно по таймеру получать содержимое фала txt который лежит на сервере.
Я сделал через idHTTP но при обрыве инета error и все не отваливалось, избавился от ошибки через try except но idHttp не продолжал сам работу при подключении.
Я решил сделать все на TClientSocket все хорошо но ответ от серверва приходит не полный, то есть содержимое txt файла приходит чуть больше половины а конца нет.
Помогите товарищи!
Заранее благодарю!


 
Slym ©   (2010-10-05 10:16) [1]

alekseyii ©   (05.10.10 9:56)
продолжал сам работу

а ты его заставлял? показывай как делал


 
alekseyii ©   (2010-10-05 10:21) [2]

procedure TForm1.ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
begin

StrIn.Text:= form1.ClientSocket1.Socket.ReceiveText;
ReadInContent;
form1.Memo1.Text:="SERVER ->>"+#13#10+StrIn.Text;

end;

StrIn:TStringList;


 
DiamondShark ©   (2010-10-05 10:21) [3]


> но idHttp не продолжал сам работу при подключении.

А как он должен был продолжать? ХТТП так устроен, что если оборвалось, то всё, веники. Надо запрос повторять.


> Я решил сделать все на TClientSocket все хорошо но ответ
> от серверва приходит не полный, то есть содержимое txt файла
> приходит чуть больше половины а конца нет.

Значит, неправильно сделал. К сожалению, подробнее что-либо можно сказать только увидев, как оно сделано.


 
alekseyii ©   (2010-10-05 10:22) [4]

продолжал работу - после переподключения инета продолжал получать данные черз get запрос и обрабатывать полученное


 
DiamondShark ©   (2010-10-05 10:23) [5]


> alekseyii ©   (05.10.10 10:21) [2]

Ты напрасно думал, что весь ответ придёт одним куском.
Читай порциями в цикле.


 
alekseyii ©   (2010-10-05 10:24) [6]

я и коннектил заново при выполнении except, но результата нет
сейчас хочу на ClientSocket Остановиться, только ответ не полный приходит :-(


 
DiamondShark ©   (2010-10-05 10:24) [7]


> alekseyii ©   (05.10.10 10:22) [4]
> продолжал работу - после переподключения инета продолжал
> получать данные черз get запрос и обрабатывать полученное

Надо запрос выполнять заново. ХТТП сервер после обрыва соединения забывает про неудачливого клиента напрочь.


 
alekseyii ©   (2010-10-05 10:25) [8]

DiamondShark
это как?
n:="";
s:=ClientSocket1.socket.ReceiveText;
while s<>"" do
  begin
   n:=n+s;
   s:=ClientSocket.socket.receiveText;
  end;


 
alekseyii ©   (2010-10-05 10:29) [9]

пробывал так, но программа вылетает при обрыве.

procedure LoadMessage;
var
lm_s:string;
lm_i:integer;
begin
try                                
  ChatData.Text:=form1.IdHTTP1.Get(chDat);
except
  begin
   sConnect;
   LoadMessage;
  end;
end;

...

end;


 
Сергей М. ©   (2010-10-05 11:03) [10]


> alekseyii ©   (05.10.10 10:29) [9]


Это ты гениально придумал - бесконечная рекурсия)


 
alekseyii ©   (2010-10-05 11:11) [11]

хех!!
сейчас
изменил

StrIn.Text:=form1.ClientSocket1.Socket.ReceiveText
где StrIn: TStringList;

на
form1.memo1.text:=form1.ClientSocket.Socket.ReceiveText

Показал весь текст от начала до конца
впринципе и ответ не большой
какого тогда типа мне нужна переменная что бы не через memo сделать?


 
Сергей М. ©   (2010-10-05 11:17) [12]


> Показал весь текст от начала до конца


Так звезды расположились)


> какого тогда типа мне нужна переменная что бы не через memo
> сделать?


TStringList


 
alekseyii ©   (2010-10-05 11:19) [13]

MyText:TCaption;

MyText:=form1.ClientSocket.Socket.ReceiveText;

тут весь текст

StrIn.Text:=MyText;

а теперь в StrIn.Text невесь :)

как мне теперь быть люди


 
Сергей М. ©   (2010-10-05 12:39) [14]


> в StrIn.Text невесь


И чего не хватает ?
На основании чего ты вообще утверждаешь что "невесь" ?


 
Dennis I. Komarov ©   (2010-10-05 15:28) [15]

А может про HTTP немного почитать? Что же метод "научного тыка" так популярен. Ведь в заголовке ответа содержится все необходимая информация...


 
alekseyii ©   (2010-10-25 11:21) [16]

Все пробуем Денис! и тыкаем и дергаем если уже в тупике, проблема решена, все по другой схеме протянул

Сергей Я знаю данные которые должна получить программа, на основании этого могу смело говорить что ответ не весь! :)


 
Сергей М. ©   (2010-10-25 22:30) [17]

Я и спрашиваю - ЧЕГО не хватает ?)


 
Похиш   (2010-10-26 00:23) [18]


> MyText:=form1.ClientSocket.Socket.ReceiveText;
>
> тут весь текст


> StrIn.Text:=MyText;
>
> а теперь в StrIn.Text невесь

Хм, пожал плечами и пошёл дальше.


 
Похиш   (2010-10-26 00:23) [19]


> MyText:=form1.ClientSocket.Socket.ReceiveText;
>
> тут весь текст


> StrIn.Text:=MyText;
>
> а теперь в StrIn.Text невесь

Хм, пожал плечами и пошёл дальше.



Страницы: 1 вся ветка

Текущий архив: 2011.01.16;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.011 c
15-1285088261
Empleado
2010-09-21 20:57
2011.01.16
Ошибка при вызове ADsFreeEnumerator


2-1287920383
George
2010-10-24 15:39
2011.01.16
Горячие клавиши и фреймы


2-1287087443
Alik
2010-10-15 00:17
2011.01.16
Подвисание при работе с большим динамическим массивом байтов


15-1285964955
Юрий
2010-10-02 00:29
2011.01.16
С днем рождения ! 2 октября 2010 суббота


15-1285725122
Дмитрий С
2010-09-29 05:52
2011.01.16
Вызвать диалог смены пароля.