Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Receiveln [D7, WinXP]


neteditor ©   (2004-03-24 19:13:00) 

Ситуация простая: есть клиентская и серверная (TTCPServer) части. Клиентская отсылает по сокету бинарный файл (размер >300K). Однако при использовании Receiveln в нити серверной части, получается получить лишь ~900 байт. После чего прием оканчивается. Клиентская часть 100% отсылает информацию в полном объеме. Используемый код


buf: AnsiString;
....
buf := '';
f := TFileStream.Create(filename, fmCreate);
repeat
 f.WriteBuffer(PChar(buf)^, Length(buf))
 buf := AnsiString( ClientSocket.Receiveln(eof) );
until buf = '';


Где eof = '####end####' (в файле данная строка не встречается)

Посоветуйте чего-нить.


neteditor   (2004-03-26 12:31:00) [1]

Надоело мучаться с TTCPServer, взял старый TServerSocket + TWinSocketStream и все работает.

Спасибо за помощь :)


Rouse_   (2004-03-25 12:02:00) [2]

Приведи полный код отправки и полный код приема


Fredericco   (2004-03-25 11:55:00) [3]

Я сам не инди юзаю, но может вот это поможет:

Use a custom time-out (ATimeout) value to change the number of milliseconds to wait for a response from the peer connection before a time-out occurs. The default value for ATimeout is IdTimeoutInfinite. See IdGlobal.pas for more information on constant timeout values.


Fredericco   (2004-03-25 11:41:00) [4]

Сорри :-)


neteditor   (2004-03-25 11:30:00) [5]

:)

The repeat statement executes its sequence of constituent statements continually, testing expression after each iteration. When expression returns True, the repeat statement terminates.

Но все равно спасибо :)


Fredericco   (2004-03-24 19:27:00) [6]

Толи лижи, толи я. (с) ЮЗ

Какой логический смысл вот этого:

buf := AnsiString( ClientSocket.Receiveln(eof) );
until buf = '';
?
Ты ж как только чего-нить получишь, сразу получишь False в условии цикла.


Наверх

Титульная страница Поиск, карта сайта Написать письмо