![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Socket ы. Передача строк. [D4, Win95/98]
Fredericco © (2003-01-10 11:42:00)Привет уважаемые мастера!
Сложилась вот такая вот ситуация:
клиентом передаю данные в цикле 100 раз строку из 3351 символов:
s:=StringOfChar("T",3344);
DelMe:=0;
for i:=1 to 100 do begin
SendTextToServ(s);
Application.ProcessMessages;
// Sleep(50);
end;
..........
const
sCut:string="<-~!~->";
..........
procedure TForm1.SendTextToServ(Text:String);
begin
csDrv.Socket.SendText(Text+sCut);
Memo1.Lines.Add(IntToStr(Length(Text+sCut)));
DelMe:=DelMe+Length(Text+sCut);
Caption:=IntToStr(DelMe);
end;
принимаю так:
procedure TForm1.ssDrvClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var
sh,sp:integer;
s:string;
begin
sh:=Socket.SocketHandle;
s:=Socket.ReceiveText;
sp:=Socket.LocalPort;
Memo2.Lines.Add(IntToStr(Length(s)));
DelMe:=DelMe+Length(s);
Label6.Caption:=IntToStr(DelMe);
end;
Если клиент отправляет с задержкой в 50 мс, то все правильно 335100 отправлено и ровно столько же получено, а если задержку убрать, то отправляется правильно, а принимается всегда по-разному, но в пределах от 30000 до 55000! При единичных небольших отправках все - ок, если отправляю сразу строку из 335100 символов - тоже все ок.
Не поможите ли мне в сложившейся ситуации?
Заранее благодарен
с уважением
Fredericco.
Fredericco (2003-01-10 12:15:00) [21]2 F1 © (10.01.03 11:53)
Спасибо, но я не очень понимаю как мне использовать OnWrite.
Не мог бы ты мне поподробнее рассказать, если не трудно, или ссылочку кинуть, гду поискать?
F1 (2003-01-10 11:53:00) [22]А кто будет анализировать результат sendtext???
Он вель может не все послать, если буфер забит до отказа!!!
Посмотри событие OnWrite...