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

Вниз

TServerSocket   Найти похожие ветки 

 
anmartynov ©   (2002-11-26 11:55) [0]

Hi All!
Пишется прога с использованием TServerSocket. В событии на OnRead я вытаскиваю данные. Для проверки работы я передаю сравнительно большой объем информации (примерно 150К) и появляется проблема: у меня пропадают большие куски из передаваемой информации ... те я получаю куски из начала пакета и потом куски из конца пакета, а середина практически вся куда-то выпадает. Может кто сталкивался с этим и знает что делать?


 
Digitman ©   (2002-11-26 12:42) [1]


> у меня пропадают большие куски из передаваемой информации
>


Твой алгоритм либо передатчика либо приемника реализован неверно. Отсюда и проблемы.


 
anmartynov ©   (2002-11-26 13:23) [2]

все написано предельно просто ...
вот кусок передатчика:

txt := TStringList.Create;
txt.LoadFromFile(odSendFile.FileName);
for j:=0 to 1000 do begin
// чтобы легче проверить какой кусок передается
ClientSocket1.Socket.SendText(inttostr(j));
for i:=0 to txt.Count-1 do begin
// сама передача
ClientSocket1.Socket.SendText(txt[i]);
end;
end;


вот кусок приемника:

procedure TForm1.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket);
var
Msg: string;
l: Integer;
buf: PChar;
begin
l := Socket.ReceiveLength;
GetMem(buf, l);
Socket.ReceiveBuf(buf[0], l);
Memo1.Lines.Add(buf);
FreeMem(buf);
end;


что тут может быть неправильного?


 
Digitman ©   (2002-11-26 13:31) [3]

Алгоритм передатчика неправилен.
В неблок.режиме любой Send-метод не есть метод, собственно передающий информацию приемнику. Происходит просто попытка постановки в поточную очередь на передачу указанного блока данных. И эта попытка может быть как успешной, так и неуспешной (частично успешной). О чем и говорит результат вызова Send[Text]-функции, анализ которого ты игнорируешь.
Читай все, что связано с событием OnWrite() - его следует обрабатывать, до тонкостей разобравшись в условиях его возникновения.


 
anmartynov ©   (2002-11-26 13:48) [4]

спасибо. попытаюсь разобраться



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

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

Наверх




Память: 0.47 MB
Время: 0.031 c
1-72366
БурЖуй
2003-01-10 23:53
2003.01.23
TDateTimePicker - добавление фона на заданые числа


4-72604
plaha999
2002-12-09 23:35
2003.01.23
Сообщения в Windows 9x


8-72416
step[B.M.]
2002-10-07 11:53
2003.01.23
Надо писать звук со входа звуковой карты в mp3


14-72469
VJar
2003-01-05 01:23
2003.01.23
Ошибка компонента MySpeedButton


3-72096
Criptus
2002-12-26 12:45
2003.01.23
Список активных пользователей