Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2003.01.23;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.009 c
1-72311
Chubais
2003-01-15 15:29
2003.01.23
как найти вызов dll


3-72097
Sword-Fish
2002-12-26 12:41
2003.01.23
Работа с БД


3-72089
VS2002
2002-12-29 06:32
2003.01.23
Поле со списком в DBGrid


1-72181
desha
2003-01-13 22:52
2003.01.23
Закрыть форму, созданную в библиотеке.


14-72512
ZiLot
2003-01-06 08:46
2003.01.23
InstallShield & BDE





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский