Форум: "Сети";
Текущий архив: 2004.05.16;
Скачать: [xml.tar.bz2];
ВнизReceiveln Найти похожие ветки
← →
neteditor (2004-03-24 19:13) [0]Ситуация простая: есть клиентская и серверная (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####" (в файле данная строка не встречается)
Посоветуйте чего-нить.
← →
Fredericco © (2004-03-24 19:27) [1]Толи лижи, толи я. (с) ЮЗ
Какой логический смысл вот этого:buf := AnsiString( ClientSocket.Receiveln(eof) );
?
until buf = "";
Ты ж как только чего-нить получишь, сразу получишь False в условии цикла.
← →
neteditor (2004-03-25 11:30) [2]:)
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-25 11:41) [3]Сорри :-)
← →
Fredericco © (2004-03-25 11:55) [4]Я сам не инди юзаю, но может вот это поможет:
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.
← →
Rouse_ © (2004-03-25 12:02) [5]Приведи полный код отправки и полный код приема
← →
neteditor (2004-03-26 12:31) [6]Надоело мучаться с TTCPServer, взял старый TServerSocket + TWinSocketStream и все работает.
Спасибо за помощь :)
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2004.05.16;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.036 c